Show / Hide Table of Contents

Class WorldRange

Inheritance
System.Object
WorldRange
Namespace: Eco.Shared.Math
Assembly: Eco.Shared.dll
Syntax
[Serialized]
public sealed class WorldRange : ValueType

Constructors

WorldRange(Vector2i, Vector2i)

Declaration
public WorldRange(Vector2i min, Vector2i max)
Parameters
Type Name Description
Vector2i min
Vector2i max

WorldRange(Vector3i, Vector3i)

Declaration
public WorldRange(Vector3i min, Vector3i max)
Parameters
Type Name Description
Vector3i min
Vector3i max

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

min

Declaration
[Serialized]
public Vector3i min
Field Value
Type Description
Vector3i

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

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

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

SizeInc

The size including the maximum position.

Declaration
public Vector3i SizeInc { get; }
Property Value
Type Description
Vector3i

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
Type Name Description
Vector3i pos
Returns
Type Description
Vector3i

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

Contains(WorldRange)

Declaration
public bool Contains(WorldRange other)
Parameters
Type Name Description
WorldRange other
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
Type Name Description
Vector2i pos
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
Type Name Description
Vector3i min
Vector3i max

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
Type Name Description
WorldRange otherRange
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
Type Name Description
Vector3i delta
Returns
Type Description
WorldRange

ExtendedBy(Vector3i)

Returns new WorldRange extended in each direction by extent.

Declaration
public WorldRange ExtendedBy(Vector3i extent)
Parameters
Type Name Description
Vector3i extent
Returns
Type Description
WorldRange
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
Type Name Description
Vector3i testPos

ExtendToInclude(WorldRange)

Extends current range to fully include range.

Declaration
public void ExtendToInclude(WorldRange range)
Parameters
Type Name Description
WorldRange range

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
Type Name Description
BSONObject bson

FromExtents(Vector3i, Vector3i)

Declaration
public static WorldRange FromExtents(Vector3i min, Vector3i max)
Parameters
Type Name Description
Vector3i min
Vector3i max
Returns
Type Description
WorldRange

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
Type Name Description
WorldRange range
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
Type Name Description
WorldRange inputRangeExc
Vector3i position
Quaternion rotation
System.Boolean worldWrapOutput
Vector3i center
Vector3i minVals
Vector3i maxVals

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

InteriorsInc()

Declaration
public IEnumerable<Vector3i> InteriorsInc()
Returns
Type Description
System.Collections.Generic.IEnumerable<Vector3i>

Intersect(WorldRange)

Declaration
public WorldRange Intersect(WorldRange other)
Parameters
Type Name Description
WorldRange other
Returns
Type Description
WorldRange

Intersects(WorldRange)

Declaration
public bool Intersects(WorldRange other)
Parameters
Type Name Description
WorldRange other
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
Type Name Description
WorldRange other
Vector3i wrappedSize
Returns
Type Description
System.Boolean

Pan(Vector3i)

Declaration
public WorldRange Pan(Vector3i pan)
Parameters
Type Name Description
Vector3i pan
Returns
Type Description
WorldRange

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
Type Name Description
Quaternion rotation
Returns
Type Description
WorldRange

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
Type Name Description
Quaternion rotation
Returns
Type Description
WorldRange

SurroundingSpace(Vector3, Int32)

Declaration
public static WorldRange SurroundingSpace(Vector3 pos, int dim)
Parameters
Type Name Description
System.Numerics.Vector3 pos
System.Int32 dim
Returns
Type Description
WorldRange

ToBson()

Declaration
public BSONObject ToBson()
Returns
Type Description
BSONObject

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
public Rect ToXZRect()
Returns
Type Description
Rect

Translate(Vector3i)

Shift world range by the given delta.

Declaration
public WorldRange Translate(Vector3i delta)
Parameters
Type Name Description
Vector3i delta
Returns
Type Description
WorldRange

TranslatedBy(Vector3i)

Declaration
public WorldRange TranslatedBy(Vector3i translation)
Parameters
Type Name Description
Vector3i translation
Returns
Type Description
WorldRange

TranslateXZ(Vector2i)

Declaration
public WorldRange TranslateXZ(Vector2i delta)
Parameters
Type Name Description
Vector2i delta
Returns
Type Description
WorldRange

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
Type Name Description
WorldRange wrappingRange
Returns
Type Description
WorldRange[]

XZWrap(WorldRange, WorldRange[])

Declaration
public int XZWrap(WorldRange wrappingRange, WorldRange[] buffer)
Parameters
Type Name Description
WorldRange wrappingRange
WorldRange[] buffer
Returns
Type Description
System.Int32

Operators

Equality(WorldRange, WorldRange)

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

Inequality(WorldRange, WorldRange)

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

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>)
PlotUtil.IntersectingPlotsExc(WorldRange)
PlotUtil.IntersectingPlotsInc(WorldRange)
☀
☾
In This Article
Back to top
Copyright (c) Strange Loop Games 2021
☀
☾