Show / Hide Table of Contents

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
Implements
IWrappedPosition3<System.Int32>
IPosition3<System.Int32>
Namespace: Eco.Shared.Math
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
Type Description
WrappedSpace

X

Declaration
public int X { get; }
Property Value
Type Description
System.Int32

Y

Declaration
public int Y { get; }
Property Value
Type Description
System.Int32

Z

Declaration
public int Z { get; }
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
Type Description
WrappedWorldPosition3i

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
Type Name Description
WrappedWorldPosition3i wrapped
System.Int32 y
Returns
Type Description
WrappedWorldPosition3i

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
Type Description
WrappedWorldPosition3i

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
Type Name Description
WrappedPosition3i wrapped
Returns
Type Description
WrappedWorldPosition3i

Create(Int32, Int32, Int32)

Makes new WrappedWorldPosition3i from unwrapped x, y and z.

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
Type Description
WrappedWorldPosition3i

Create(Single, Single, Single)

Makes new WrappedWorldPosition3i from unwrapped x, y and z.

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
Type Description
WrappedWorldPosition3i

Equals(WrappedWorldPosition3i)

Declaration
public bool Equals(WrappedWorldPosition3i other)
Parameters
Type Name Description
WrappedWorldPosition3i other
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
Type Description
System.Collections.Generic.IEnumerable<WrappedWorldPosition3i>

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
Type Name Description
Vector3i delta
WrappedWorldPosition3i result
Returns
Type Description
System.Boolean

TryCreate(Vector3i, out WrappedWorldPosition3i)

Declaration
public static bool TryCreate(Vector3i worldPos, out WrappedWorldPosition3i wrappedWorldPos)
Parameters
Type Name Description
Vector3i worldPos
WrappedWorldPosition3i wrappedWorldPos
Returns
Type Description
System.Boolean

TryCreate(WrappedPosition3i, out WrappedWorldPosition3i)

Declaration
public static bool TryCreate(WrappedPosition3i worldPos, out WrappedWorldPosition3i wrappedWorldPos)
Parameters
Type Name Description
WrappedPosition3i worldPos
WrappedWorldPosition3i wrappedWorldPos
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
Type Name Description
System.Int32 x
System.Int32 y
System.Int32 z
WrappedWorldPosition3i wrappedWorldPos
Returns
Type Description
System.Boolean

TryCreate(Vector3, out WrappedWorldPosition3i)

Declaration
public static bool TryCreate(Vector3 worldPos, out WrappedWorldPosition3i wrappedWorldPos)
Parameters
Type Name Description
System.Numerics.Vector3 worldPos
WrappedWorldPosition3i wrappedWorldPos
Returns
Type Description
System.Boolean

TryDecreaseY(Int32, out WrappedWorldPosition3i)

Tries to decrease Y component where decrement should be positive value. If succeed (not out of world bounds) then returns true and decreased value in decreasedPos. For increasing Y use TryIncreaseY(Int32, out WrappedWorldPosition3i).

Declaration
public bool TryDecreaseY(int decrement, out WrappedWorldPosition3i decreasedPos)
Parameters
Type Name Description
System.Int32 decrement
WrappedWorldPosition3i decreasedPos
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
Type Name Description
Direction dir
WrappedWorldPosition3i neighborPos
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
Type Name Description
Axis axis
WrappedWorldPosition3i side1
WrappedWorldPosition3i side2
Returns
Type Description
System.Boolean

TryIncreaseY(Int32, out WrappedWorldPosition3i)

Tries to increase Y component where increment should be positive value. If succeed (not out of world bounds) then returns true and increased value in increasedPos. For decreasing Y use TryDecreaseY(Int32, out WrappedWorldPosition3i).

Declaration
public bool TryIncreaseY(int increment, out WrappedWorldPosition3i increasedPos)
Parameters
Type Name Description
System.Int32 increment
WrappedWorldPosition3i increasedPos
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
Type Description
System.Collections.Generic.IEnumerable<WrappedWorldPosition3i>

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
Type Description
System.Collections.Generic.IEnumerable<System.ValueTuple<WrappedWorldPosition3i, Direction>>

Operators

Equality(WrappedWorldPosition3i, WrappedWorldPosition3i)

Declaration
public static bool operator ==(WrappedWorldPosition3i left, WrappedWorldPosition3i right)
Parameters
Type Name Description
WrappedWorldPosition3i left
WrappedWorldPosition3i right
Returns
Type Description
System.Boolean

Explicit(WorldPosition3i to WrappedWorldPosition3i)

Declaration
public static explicit operator WrappedWorldPosition3i(WorldPosition3i pos)
Parameters
Type Name Description
WorldPosition3i pos
Returns
Type Description
WrappedWorldPosition3i

Explicit(WrappedPosition3i to WrappedWorldPosition3i)

Declaration
public static explicit operator WrappedWorldPosition3i(WrappedPosition3i pos)
Parameters
Type Name Description
WrappedPosition3i pos
Returns
Type Description
WrappedWorldPosition3i

Explicit(WrappedWorldPosition3i to Vector3i)

Declaration
public static explicit operator Vector3i(WrappedWorldPosition3i pos)
Parameters
Type Name Description
WrappedWorldPosition3i pos
Returns
Type Description
Vector3i

Explicit(WrappedWorldPosition3i to WorldPosition3i)

Declaration
public static explicit operator WorldPosition3i(WrappedWorldPosition3i pos)
Parameters
Type Name Description
WrappedWorldPosition3i pos
Returns
Type Description
WorldPosition3i

Explicit(WrappedWorldPosition3i to Vector3)

Declaration
public static explicit operator Vector3(WrappedWorldPosition3i pos)
Parameters
Type Name Description
WrappedWorldPosition3i pos
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
Type Description
WrappedWorldPosition3i

Implicit(Vector3i to WrappedWorldPosition3i)

Declaration
public static implicit operator WrappedWorldPosition3i(Vector3i pos)
Parameters
Type Name Description
Vector3i pos
Returns
Type Description
WrappedWorldPosition3i

Inequality(WrappedWorldPosition3i, WrappedWorldPosition3i)

Declaration
public static bool operator !=(WrappedWorldPosition3i left, WrappedWorldPosition3i right)
Parameters
Type Name Description
WrappedWorldPosition3i left
WrappedWorldPosition3i right
Returns
Type Description
System.Boolean

Implements

IWrappedPosition3<T>
IPosition3<T>

Extension Methods

CommandLine.FeedFromCommandLine(Object)
CommandLine.ToCommandLineArgs(Object, Func<Object, Boolean>)
ListUtil.DepthFirstTraversal<T>(T, Func<T, IEnumerable<T>>)
EnumerableExtensions.SingleItemAsEnumerable<T>(T)
EventUtils.RaiseEvent<TEventArgs>(Object, String, TEventArgs)
PredicateUtils.MatchesAll<TEnumerable, T>(T, TEnumerable)
PredicateUtils.MatchesAll<T>(T, Func<T, Boolean>[])
PredicateUtils.MatchesAny<TEnumerable, T>(T, TEnumerable)
ReflectionUtils.PropertyValue<T>(Object, PropertyInfo)
ReflectionUtils.TryGetPropertyValueByName<T>(Object, String, out T)
ReflectionUtils.GetPropertyValueByName<T>(Object, String)
ReflectionUtils.SetPropertyByName(Object, String, Object)
ReflectionUtils.GetStructPropertyByName<T>(Object, String)
ReflectionUtils.GetStringPropertyByName(Object, String)
ReflectionUtils.ZipByProperty<T>(Object, Object, Object, Func<T, T, T>)
☀
☾
In This Article
Back to top
Copyright (c) Strange Loop Games 2021
☀
☾