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 |
|
Center
Declaration
public Vector3 Center { 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> |
|
GetWorldPosExtentsFromRange(WorldRange, Vector3i, Quaternion, Boolean, out Vector3i, out Vector3i, out Vector3i)
Declaration
public static void GetWorldPosExtentsFromRange(WorldRange inputRangeExc, Vector3i position, Quaternion rotation, bool worldWrapOutput, out Vector3i center, out Vector3i minVals, out Vector3i maxVals)
Parameters
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