Class WorldRange
Inheritance
System.Object
WorldRange
Assembly: Eco.Shared.dll
Syntax
[Serialized]
public sealed class WorldRange : ValueType
Constructors
WorldRange(Vector2i, Vector2i)
Declaration
public WorldRange(Vector2i min, Vector2i max)
Parameters
WorldRange(Vector3i, Vector3i)
Declaration
public WorldRange(Vector3i min, Vector3i max)
Parameters
WorldRange(IEnumerable<Vector3i>)
Creates a World Range that contains a list of Vector3i
Declaration
public WorldRange(IEnumerable<Vector3i> enumeration)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<Vector3i> |
enumeration |
|
WorldRange(Int32)
Declaration
public WorldRange(int cubedims)
Parameters
| Type |
Name |
Description |
| System.Int32 |
cubedims |
|
Fields
max
Declaration
[Serialized]
public Vector3i max
Field Value
min
Declaration
[Serialized]
public Vector3i min
Field Value
Properties
BottomCenter
Declaration
public Vector3 BottomCenter { get; }
Property Value
| Type |
Description |
| System.Numerics.Vector3 |
|
CenterExc
Declaration
public Vector3 CenterExc { get; }
Property Value
| Type |
Description |
| System.Numerics.Vector3 |
|
CenterInc
Declaration
public Vector3 CenterInc { get; }
Property Value
| Type |
Description |
| System.Numerics.Vector3 |
|
Empty
A range around 0,0,0 with 0 dimentions.
Declaration
public static WorldRange Empty { get; }
Property Value
Height
The height not including the maximum position.
Declaration
public int Height { get; }
Property Value
| Type |
Description |
| System.Int32 |
|
HeightInc
The height including the maximum position.
Declaration
public int HeightInc { get; }
Property Value
| Type |
Description |
| System.Int32 |
|
Invalid
A range where IsValid() will return false.
Declaration
public static WorldRange Invalid { get; }
Property Value
IsEmpty
Declaration
public bool IsEmpty { get; }
Property Value
| Type |
Description |
| System.Boolean |
|
IsValid
Declaration
public bool IsValid { get; }
Property Value
| Type |
Description |
| System.Boolean |
|
Length
The length not including the maximum position.
Declaration
public int Length { get; }
Property Value
| Type |
Description |
| System.Int32 |
|
LengthInc
The length including the maximum position.
Declaration
public int LengthInc { get; }
Property Value
| Type |
Description |
| System.Int32 |
|
Size
The size not including the maximum position.
Declaration
public Vector3i Size { get; }
Property Value
SizeInc
The size including the maximum position.
Declaration
public Vector3i SizeInc { get; }
Property Value
Volume
The volume not including the maximum position.
Declaration
public int Volume { get; }
Property Value
| Type |
Description |
| System.Int32 |
|
VolumeInc
The volume including the maximum position.
Declaration
public int VolumeInc { get; }
Property Value
| Type |
Description |
| System.Int32 |
|
Width
The width not including the maximum position.
Declaration
public int Width { get; }
Property Value
| Type |
Description |
| System.Int32 |
|
WidthInc
The width including the maximum position.
Declaration
public int WidthInc { get; }
Property Value
| Type |
Description |
| System.Int32 |
|
Methods
ClosestPointTo(Vector3i)
Declaration
public Vector3i ClosestPointTo(Vector3i pos)
Parameters
Returns
CollapseAlongAxis(Axis, Boolean)
Collapses a square range into a line.
Declaration
public void CollapseAlongAxis(Axis a, bool collapseTowardsMin)
Parameters
| Type |
Name |
Description |
| Axis |
a |
|
| System.Boolean |
collapseTowardsMin |
|
Contains(Vector3i)
Declaration
public bool Contains(Vector3i pos)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
Contains(WorldRange)
Declaration
public bool Contains(WorldRange other)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
Contains(Vector3)
Declaration
public bool Contains(Vector3 pos)
Parameters
| Type |
Name |
Description |
| System.Numerics.Vector3 |
pos |
|
Returns
| Type |
Description |
| System.Boolean |
|
ContainsXZ(Vector2i)
Checks if the range contains X,Z pos.
Declaration
public bool ContainsXZ(Vector2i pos)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
Corners()
Returns enumerable with all corners of this WorldRange
Declaration
public IEnumerable<Vector3i> Corners()
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<Vector3i> |
|
Deconstruct(out Vector3i, out Vector3i)
Declaration
public void Deconstruct(out Vector3i min, out Vector3i max)
Parameters
EdgeCount(Vector3i)
Declaration
public int EdgeCount(Vector3i windowPos)
Parameters
| Type |
Name |
Description |
| Vector3i |
windowPos |
|
Returns
| Type |
Description |
| System.Int32 |
|
EdgesInc()
Declaration
public IEnumerable<Vector3i> EdgesInc()
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<Vector3i> |
|
Equals(WorldRange)
Declaration
public bool Equals(WorldRange otherRange)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
Equals(Object)
Declaration
public override bool Equals(object other)
Parameters
| Type |
Name |
Description |
| System.Object |
other |
|
Returns
| Type |
Description |
| System.Boolean |
|
ExpandMax(Vector3i)
Expands the maximum value by delta. Useful for converting from an inclusive world range to an exclusive one.
Declaration
public WorldRange ExpandMax(Vector3i delta)
Parameters
Returns
ExtendedBy(Vector3i)
Returns new WorldRange extended in each direction by extent.
Declaration
public WorldRange ExtendedBy(Vector3i extent)
Parameters
Returns
Examples
new WorldRange(new(0, 0, 0), new(1, 1, 1)).ExtendedBy(new(1, 0, 2)); // WorldRange((-1, 0, -2), (2, 1, 3))
ExtendToInclude(Vector3i)
Result will be in [inclusive;exclusive) format
Declaration
public void ExtendToInclude(Vector3i testPos)
Parameters
ExtendToInclude(WorldRange)
Extends current range to fully include range.
Declaration
public void ExtendToInclude(WorldRange range)
Parameters
Fix(Vector3i)
Swaps any values where the min of the axis is larger than the max of the axis.
Declaration
public void Fix(Vector3i worldSize = null)
Parameters
| Type |
Name |
Description |
| Vector3i |
worldSize |
|
ForEach(Action<Vector3i>)
Declaration
public void ForEach(Action<Vector3i> a)
Parameters
| Type |
Name |
Description |
| System.Action<Vector3i> |
a |
|
ForEachInc(Action<Vector3i>)
Declaration
public void ForEachInc(Action<Vector3i> a)
Parameters
| Type |
Name |
Description |
| System.Action<Vector3i> |
a |
|
FromBson(BSONObject)
Declaration
public void FromBson(BSONObject bson)
Parameters
FromExtents(Vector3i, Vector3i)
Declaration
public static WorldRange FromExtents(Vector3i min, Vector3i max)
Parameters
Returns
GetHashCode()
Declaration
public override int GetHashCode()
Returns
| Type |
Description |
| System.Int32 |
|
GetNonOverlappingXZRanges(WorldRange)
Returns sub-range(s) for current range which doesn't overlap range. Useful for range difference calculation.
Possible outcomes:
- min1.x,min1.z,max1.x,min2.z (when part of the range is before other range min z and overlaps)
- min1.x,max2.z,max1.x,max1.z (when part of the range is after other range max Z and overlaps)
- min1.x,min{1,2}.z,min2.x,max{1,2}.z (when part of the range is at left, Z depends on previous parts slices)
- max2.x,min{1,2}.z,max1.x,max{1,2}.z (when part of the range is at right, Z depends on previous parts slices)
Declaration
public IEnumerable<WorldRange> GetNonOverlappingXZRanges(WorldRange range)
Parameters
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<WorldRange> |
|
GetWorldRangeWithWrappedMin(Vector3i)
Returns the wrapped version of the current range, making sure that the min point is in wrapped space while the end point may get out of wrapped size boundaries
Since manually wrapping each component may result in an invalid range, we make sure to find an appropiate max position so that the range is always valid.
[Any valid range] -> [Wrapped min range)]
Declaration
public WorldRange GetWorldRangeWithWrappedMin(Vector3i wrappedSize)
Parameters
| Type |
Name |
Description |
| Vector3i |
wrappedSize |
|
Returns
InteriorsInc()
Declaration
public IEnumerable<Vector3i> InteriorsInc()
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<Vector3i> |
|
Intersect(WorldRange)
Declaration
public WorldRange Intersect(WorldRange other)
Parameters
Returns
Intersects(WorldRange)
Declaration
public bool Intersects(WorldRange other)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
IntersectsWrapped(WorldRange, Vector3i)
Checks if current current range intersects with another range in a wrapped space. Based loosely on the implementation of Intersects(WorldRange)
It makes sure to convert the ranges to a wrapped world space.
Declaration
public bool IntersectsWrapped(WorldRange other, Vector3i wrappedSize)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
Pan(Vector3i)
Declaration
public WorldRange Pan(Vector3i pan)
Parameters
Returns
PlotPosIter()
Iterates all X,Z positions in the range.
Declaration
public IEnumerable<PlotPos> PlotPosIter()
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<PlotPos> |
|
RotatedByExc(Quaternion)
Rotates WorldRange around (0, 0, 0) (works only with exclusive range). I.e. (-2,-2)-(4,4) rotated by 180 degree will be (-3,-3)-(3,3). When used as exclusive range will include point which was rotated from (-2,-2) to (2,2).
Declaration
public WorldRange RotatedByExc(Quaternion rotation)
Parameters
Returns
RotatedByInc(Quaternion)
Rotates WorldRange around (0, 0, 0) (works only with inclusive range). I.e. (-2,-2)-(4,4) rotated by 180 degree will be (-4,-4)-(2,2).
Declaration
public WorldRange RotatedByInc(Quaternion rotation)
Parameters
Returns
SurroundingSpace(Vector3, Int32)
Declaration
public static WorldRange SurroundingSpace(Vector3 pos, int dim)
Parameters
| Type |
Name |
Description |
| System.Numerics.Vector3 |
pos |
|
| System.Int32 |
dim |
|
Returns
ToBson()
Declaration
public BSONObject ToBson()
Returns
ToString()
Declaration
public override string ToString()
Returns
| Type |
Description |
| System.String |
|
ToXZRect()
Return a rect that represents the xz footprint of this world range.
Declaration
Returns
Translate(Vector3i)
Shift world range by the given delta.
Declaration
public WorldRange Translate(Vector3i delta)
Parameters
Returns
TranslatedBy(Vector3i)
Declaration
public WorldRange TranslatedBy(Vector3i translation)
Parameters
| Type |
Name |
Description |
| Vector3i |
translation |
|
Returns
TranslateXZ(Vector2i)
Declaration
public WorldRange TranslateXZ(Vector2i delta)
Parameters
Returns
WrappedXZIter(Vector3i)
Iterates all X,Z positions in the range in wrapped space.
Declaration
public IEnumerable<Vector2i> WrappedXZIter(Vector3i wrappedSize)
Parameters
| Type |
Name |
Description |
| Vector3i |
wrappedSize |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<Vector2i> |
|
XYZIter()
Declaration
public IEnumerable<Vector3i> XYZIter()
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<Vector3i> |
|
XYZIterInc()
Declaration
public IEnumerable<Vector3i> XYZIterInc()
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<Vector3i> |
|
XZIter()
Iterates all X,Z positions in the range.
Declaration
public IEnumerable<Vector2i> XZIter()
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<Vector2i> |
|
XZIterInc()
Declaration
public IEnumerable<Vector2i> XZIterInc()
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<Vector2i> |
|
XZWrap(WorldRange)
Declaration
public WorldRange[] XZWrap(WorldRange wrappingRange)
Parameters
Returns
XZWrap(WorldRange, WorldRange[])
Declaration
public int XZWrap(WorldRange wrappingRange, WorldRange[] buffer)
Parameters
Returns
| Type |
Description |
| System.Int32 |
|
Operators
Equality(WorldRange, WorldRange)
Declaration
public static bool operator ==(WorldRange left, WorldRange right)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
Inequality(WorldRange, WorldRange)
Declaration
public static bool operator !=(WorldRange left, WorldRange right)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
Extension Methods