Show / Hide Table of Contents

Class World

Inheritance
System.Object
World
Namespace: Eco.World
Assembly: Eco.World.dll
Syntax
public abstract class World : World

Constructors

World()

Declaration
protected World()

Properties

Chunks

Declaration
public static IEnumerable<PersistentChunk> Chunks { get; }
Property Value
Type Description
System.Collections.Generic.IEnumerable<PersistentChunk>

ChunksCount

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

Locked

Declaration
public static bool Locked { get; }
Property Value
Type Description
System.Boolean

MaxWaterHeight

Declaration
public static Array2D<int> MaxWaterHeight { get; set; }
Property Value
Type Description
Array2D<System.Int32>

MaxYCache

Declaration
public static Array2D<int> MaxYCache { get; set; }
Property Value
Type Description
Array2D<System.Int32>

OnBlockChanged

Declaration
public static ThreadSafeAction<WrappedWorldPosition3i> OnBlockChanged { get; }
Property Value
Type Description
ThreadSafeAction<WrappedWorldPosition3i>

OnTopBlockChanged

Declaration
public static ThreadSafeAction<Vector2i, int> OnTopBlockChanged { get; }
Property Value
Type Description
ThreadSafeAction<Vector2i, System.Int32>

OnTopOrWaterBlockCacheChanged

Declaration
public static ThreadSafeAction<Vector2i> OnTopOrWaterBlockCacheChanged { get; }
Property Value
Type Description
ThreadSafeAction<Vector2i>

TopBlockCache

Declaration
public static Array2D<Block> TopBlockCache { get; set; }
Property Value
Type Description
Array2D<Block>

Methods

AllNeighborsMatchOrHigher(Vector3i)

Declaration
public static bool AllNeighborsMatchOrHigher(Vector3i pos)
Parameters
Type Name Description
Vector3i pos
Returns
Type Description
System.Boolean

AwakeNear(WrappedWorldPosition3i, PersistentChunk)

Pass chunk of world pos so it dont have to go to chunk table which is slow

Declaration
public static void AwakeNear(WrappedWorldPosition3i worldPos, PersistentChunk chunkAtPosition)
Parameters
Type Name Description
WrappedWorldPosition3i worldPos
PersistentChunk chunkAtPosition

AwakeNearDiagonals(WrappedWorldPosition3i)

Declaration
public static void AwakeNearDiagonals(WrappedWorldPosition3i worldPos)
Parameters
Type Name Description
WrappedWorldPosition3i worldPos

BatchApply(IEnumerable<BlockChange>)

Declaration
public static void BatchApply(IEnumerable<BlockChange> changes)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<BlockChange> changes

BlockAtOrBelow(Vector3i)

Declaration
public static Vector3i BlockAtOrBelow(Vector3i pos)
Parameters
Type Name Description
Vector3i pos
Returns
Type Description
Vector3i

CalculateChunkEncasement(Action<Single>)

Declaration
public static void CalculateChunkEncasement(Action<float> updateAction)
Parameters
Type Name Description
System.Action<System.Single> updateAction

ChunksInRange(WorldRange)

Declaration
public static IEnumerable<PersistentChunk> ChunksInRange(WorldRange range)
Parameters
Type Name Description
WorldRange range
Returns
Type Description
System.Collections.Generic.IEnumerable<PersistentChunk>

ClampToWaterHeight(Vector3i)

Clamps Y coordinate of pos to water height

Declaration
public static Vector3i ClampToWaterHeight(Vector3i pos)
Parameters
Type Name Description
Vector3i pos
Returns
Type Description
Vector3i

Clear()

Declaration
public static void Clear()

DeleteBlock(WrappedWorldPosition3i, Boolean)

Deletes the block at from the world at worldPos.

Declaration
public static void DeleteBlock(WrappedWorldPosition3i worldPos, bool checkForWaterFlow = true)
Parameters
Type Name Description
WrappedWorldPosition3i worldPos

The world position of the block to be deleted.

System.Boolean checkForWaterFlow

Set to true to replace the block with Block.Empty. Ie. Crater should force delete the terrain. Handles removing blocks underwater.

FindPyramidPos(Vector3i)

Declaration
public static Vector3i FindPyramidPos(Vector3i start)
Parameters
Type Name Description
Vector3i start
Returns
Type Description
Vector3i

ForceUpdate(WrappedWorldPosition3i)

Forces chunk dirty at specified block pos

Declaration
public static void ForceUpdate(WrappedWorldPosition3i worldPos)
Parameters
Type Name Description
WrappedWorldPosition3i worldPos

ForceUpdateBatch(IEnumerable<WrappedWorldPosition3i>)

Forces chunk dirty at specified block positions, updates once per chunk. Useful for lots of positions in same chunk

Declaration
public static void ForceUpdateBatch(IEnumerable<WrappedWorldPosition3i> worldPositions)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<WrappedWorldPosition3i> worldPositions

GetBlock(Vector3i)

Returns the block at the location or Block.Empty. Returns Empty for invalid worldPos (i.e. Y negative or Z above top block).

Declaration
public static Block GetBlock(Vector3i worldPos)
Parameters
Type Name Description
Vector3i worldPos
Returns
Type Description
Block

GetBlock(WrappedPosition3i)

Returns the block at the location or Block.Empty.

Declaration
public static Block GetBlock(WrappedPosition3i worldPos)
Parameters
Type Name Description
WrappedPosition3i worldPos
Returns
Type Description
Block

GetBlock(WrappedWorldPosition3i)

Returns the block at the location or Block.Empty.

Declaration
public static Block GetBlock(WrappedWorldPosition3i worldPos)
Parameters
Type Name Description
WrappedWorldPosition3i worldPos
Returns
Type Description
Block

GetBlockFromChunkIfPossible(Vector3i, PersistentChunk)

Declaration
public static Block GetBlockFromChunkIfPossible(Vector3i pos, PersistentChunk chunk)
Parameters
Type Name Description
Vector3i pos
PersistentChunk chunk
Returns
Type Description
Block

GetBlockProbablyTop(WrappedWorldPosition3i)

Declaration
public static Block GetBlockProbablyTop(WrappedWorldPosition3i worldPos)
Parameters
Type Name Description
WrappedWorldPosition3i worldPos
Returns
Type Description
Block

GetBlockType(Vector3i)

Returns type of the block located at given position.

Declaration
public static Type GetBlockType(Vector3i worldPos)
Parameters
Type Name Description
Vector3i worldPos
Returns
Type Description
System.Type

GetBlockType(WrappedPosition3i)

Returns type of the block located at given position.

Declaration
public static Type GetBlockType(WrappedPosition3i worldPos)
Parameters
Type Name Description
WrappedPosition3i worldPos
Returns
Type Description
System.Type

GetBlockType(WrappedWorldPosition3i)

Returns type of the block located at given position.

Declaration
public static Type GetBlockType(WrappedWorldPosition3i worldPos)
Parameters
Type Name Description
WrappedWorldPosition3i worldPos
Returns
Type Description
System.Type

GetChunk(Vector3i)

Declaration
public static PersistentChunk GetChunk(Vector3i chunkPos)
Parameters
Type Name Description
Vector3i chunkPos
Returns
Type Description
PersistentChunk

GetChunkColumn(Vector2i)

Returns all the current chunks at the given XZ chunkPos coordinate organized from lowest to highest.

Declaration
public static IEnumerable<PersistentChunk> GetChunkColumn(Vector2i pos)
Parameters
Type Name Description
Vector2i pos
Returns
Type Description
System.Collections.Generic.IEnumerable<PersistentChunk>

GetChunkColumnAscendingFrom(Vector3i)

Returns all the current chunks starting (inclusively) at the given chunkPos coordinate extending to the top of the column in ascending order.

Declaration
public static IEnumerable<PersistentChunk> GetChunkColumnAscendingFrom(Vector3i pos)
Parameters
Type Name Description
Vector3i pos
Returns
Type Description
System.Collections.Generic.IEnumerable<PersistentChunk>

GetChunkColumnFromTop(Vector2i)

Returns all the current chunks at the given XZ chunkPos coordinate organized from highest to lowest.

Declaration
public static IEnumerable<PersistentChunk> GetChunkColumnFromTop(Vector2i pos)
Parameters
Type Name Description
Vector2i pos
Returns
Type Description
System.Collections.Generic.IEnumerable<PersistentChunk>

GetChunkWorld(Vector3i)

Declaration
public static PersistentChunk GetChunkWorld(Vector3i worldPos)
Parameters
Type Name Description
Vector3i worldPos
Returns
Type Description
PersistentChunk

GetDeepestNeighbor(Vector3i, out Vector3i)

Declaration
public static int GetDeepestNeighbor(Vector3i pos, out Vector3i outvec)
Parameters
Type Name Description
Vector3i pos
Vector3i outvec
Returns
Type Description
System.Int32

GetDepth(Vector3i)

Declaration
public static int GetDepth(Vector3i pos)
Parameters
Type Name Description
Vector3i pos
Returns
Type Description
System.Int32

GetEmptyPilePosition(Vector2i)

Declaration
public static Vector3i GetEmptyPilePosition(Vector2i xzPos)
Parameters
Type Name Description
Vector2i xzPos
Returns
Type Description
Vector3i

GetRandomLandPos()

Declaration
public static WorldPosition3i GetRandomLandPos()
Returns
Type Description
WorldPosition3i

GetRandomLandPos(Random)

Declaration
public static WorldPosition3i GetRandomLandPos(Random randomizer)
Parameters
Type Name Description
System.Random randomizer
Returns
Type Description
WorldPosition3i

GetRandomLandPosNear(Vector3i, Single)

Declaration
public static Vector3i GetRandomLandPosNear(Vector3i nearPos, float radius = 10F)
Parameters
Type Name Description
Vector3i nearPos
System.Single radius
Returns
Type Description
Vector3i

GetTopBlock(Vector2i)

Declaration
public static Block GetTopBlock(Vector2i worldPos)
Parameters
Type Name Description
Vector2i worldPos
Returns
Type Description
Block

GetTopBlockPos(Vector2i)

Return the highest position occupied by a block (land or water) at the position that is passed in the parameter.

Declaration
public static Vector3i GetTopBlockPos(Vector2i pos)
Parameters
Type Name Description
Vector2i pos

Position to check. Doesn't have to be wrapped.

Returns
Type Description
Vector3i

Unwrapped position, unless passed argument was already wrapped.

GetTopBlockY(Vector2i)

Return the highest Y position occupied by a block (land or water) at the position that is passed in the parameter.

Declaration
public static int GetTopBlockY(Vector2i pos)
Parameters
Type Name Description
Vector2i pos

Position to check. Doesn't have to be wrapped.

Returns
Type Description
System.Int32

GetTopEmptyBlock(Vector2i)

The y position above the top solid block

Declaration
public static int GetTopEmptyBlock(Vector2i worldPos)
Parameters
Type Name Description
Vector2i worldPos
Returns
Type Description
System.Int32

GetTopGroundPos(Vector2i)

Declaration
public static Vector3i GetTopGroundPos(Vector2i worldPos)
Parameters
Type Name Description
Vector2i worldPos
Returns
Type Description
Vector3i

GetTopGroundPos(Vector3i)

Declaration
public static Vector3i GetTopGroundPos(Vector3i worldPos)
Parameters
Type Name Description
Vector3i worldPos
Returns
Type Description
Vector3i

GetTopPathPos(Vector2i)

Declaration
public static Vector3i GetTopPathPos(Vector2i worldPos)
Parameters
Type Name Description
Vector2i worldPos
Returns
Type Description
Vector3i

GetTopSolidBlockUnderwater(Vector2i, Int32)

Y position of the top solid block underwater.

Declaration
public static int GetTopSolidBlockUnderwater(Vector2i waterPos, int maxDeep = 5)
Parameters
Type Name Description
Vector2i waterPos
System.Int32 maxDeep
Returns
Type Description
System.Int32

GetTopSolidBlockY(Vector2i)

The y position of the top solid block

Declaration
public static int GetTopSolidBlockY(Vector2i worldPos)
Parameters
Type Name Description
Vector2i worldPos
Returns
Type Description
System.Int32

GetTopSolidBlockYRaw(Vector2i)

Faster than GetTopBlockY but don't performs wrapping

Declaration
public static int GetTopSolidBlockYRaw(Vector2i worldPos)
Parameters
Type Name Description
Vector2i worldPos
Returns
Type Description
System.Int32

GetTopSolidBlockYRaw(Int32, Int32)

Faster than GetTopBlockY but don't performs wrapping

Declaration
public static int GetTopSolidBlockYRaw(int x, int y)
Parameters
Type Name Description
System.Int32 x
System.Int32 y
Returns
Type Description
System.Int32

GetTopSolidNonConstructedPos(Vector2i)

Returns the position of the topmost solid, non-constructed block in a world column.

Declaration
public static (Vector3i, Block, bool) GetTopSolidNonConstructedPos(Vector2i worldColumn)
Parameters
Type Name Description
Vector2i worldColumn
Returns
Type Description
System.ValueTuple<Vector3i, Block, System.Boolean>

GetWaterHeight(Vector2i)

Declaration
public static int GetWaterHeight(Vector2i worldPos)
Parameters
Type Name Description
Vector2i worldPos
Returns
Type Description
System.Int32

InitCachedData(Vector2i)

Declaration
public static void InitCachedData(Vector2i size)
Parameters
Type Name Description
Vector2i size

Initialize(Vector3i)

Declaration
public static void Initialize(Vector3i chunkSize)
Parameters
Type Name Description
Vector3i chunkSize

Initialize(WorldChunkGrid)

Declaration
public static void Initialize(WorldChunkGrid chunkGrid)
Parameters
Type Name Description
WorldChunkGrid chunkGrid

IsConstructed(Vector2i)

Declaration
public static bool IsConstructed(Vector2i blockPos)
Parameters
Type Name Description
Vector2i blockPos
Returns
Type Description
System.Boolean

IsLegalVerticalPosition(Vector3)

Checks if position is inside vertical world bounds

Declaration
public static bool IsLegalVerticalPosition(Vector3 pos)
Parameters
Type Name Description
System.Numerics.Vector3 pos
Returns
Type Description
System.Boolean

IsPathPos(WrappedPosition3i)

Declaration
public static bool IsPathPos(WrappedPosition3i pos)
Parameters
Type Name Description
WrappedPosition3i pos
Returns
Type Description
System.Boolean

IsSolidOrOccupied(WrappedWorldPosition3i)

Declaration
public static bool IsSolidOrOccupied(WrappedWorldPosition3i blockPos)
Parameters
Type Name Description
WrappedWorldPosition3i blockPos
Returns
Type Description
System.Boolean

IsTopGround(WrappedPosition3i)

Declaration
public static bool IsTopGround(WrappedPosition3i pos)
Parameters
Type Name Description
WrappedPosition3i pos
Returns
Type Description
System.Boolean

IsUnderwater(Vector2i)

Declaration
public static bool IsUnderwater(Vector2i blockPos)
Parameters
Type Name Description
Vector2i blockPos
Returns
Type Description
System.Boolean

IsUnderwater(WorldPosition3i)

Declaration
public static bool IsUnderwater(WorldPosition3i blockPos)
Parameters
Type Name Description
WorldPosition3i blockPos
Returns
Type Description
System.Boolean

IsUnderwater(WrappedPosition3i)

Declaration
public static bool IsUnderwater(WrappedPosition3i blockPos)
Parameters
Type Name Description
WrappedPosition3i blockPos
Returns
Type Description
System.Boolean

IsUnderwater(WrappedWorldPosition3i)

Declaration
public static bool IsUnderwater(WrappedWorldPosition3i blockPos)
Parameters
Type Name Description
WrappedWorldPosition3i blockPos
Returns
Type Description
System.Boolean

Lock()

Declaration
public static void Lock()

MaxWaterPos(WorldPosition3i)

Declaration
public static WorldPosition3i MaxWaterPos(WorldPosition3i pos)
Parameters
Type Name Description
WorldPosition3i pos
Returns
Type Description
WorldPosition3i

MaxYPos(Vector2i)

Declaration
public static Vector3i MaxYPos(Vector2i pos)
Parameters
Type Name Description
Vector2i pos
Returns
Type Description
Vector3i

MaxYPos(WorldPosition3i)

Declaration
public static WorldPosition3i MaxYPos(WorldPosition3i pos)
Parameters
Type Name Description
WorldPosition3i pos
Returns
Type Description
WorldPosition3i

NextBlockUp(Vector3i)

Declaration
public static Block NextBlockUp(Vector3i pos)
Parameters
Type Name Description
Vector3i pos
Returns
Type Description
Block

RandomMapPos()

Declaration
public static Vector3i RandomMapPos()
Returns
Type Description
Vector3i

RandomMapPos(Random)

Declaration
public static Vector3i RandomMapPos(Random randomizer)
Parameters
Type Name Description
System.Random randomizer
Returns
Type Description
Vector3i

ReCacheAllData(Boolean)

Invalidates top block and underwater block caches for every X,Z in the world. It will only trigger cache update events if notify set to true.

Declaration
public static void ReCacheAllData(bool notify = true)
Parameters
Type Name Description
System.Boolean notify

ReCacheColumns(IEnumerable<Vector2i>, Int32, Boolean)

Invalidates all block caches for requested set of chunk column positions (as 2D chunk positions).

Declaration
public static void ReCacheColumns(IEnumerable<Vector2i> chunkPosXZ, int columnsCount, bool notify = true)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<Vector2i> chunkPosXZ
System.Int32 columnsCount
System.Boolean notify

ResetCache()

Declaration
public static void ResetCache()

SetBlock(Type, WrappedWorldPosition3i, PersistentChunk, Object[])

If you know the chunk you can pass it to avoid lookup for better performance

Declaration
public static Block SetBlock(Type blockType, WrappedWorldPosition3i worldPos, PersistentChunk chunk = null, params object[] args)
Parameters
Type Name Description
System.Type blockType
WrappedWorldPosition3i worldPos
PersistentChunk chunk
System.Object[] args
Returns
Type Description
Block

SetBlock(Type, WrappedWorldPosition3i, Object[])

Declaration
public static Block SetBlock(Type blockType, WrappedWorldPosition3i worldPos, params object[] args)
Parameters
Type Name Description
System.Type blockType
WrappedWorldPosition3i worldPos
System.Object[] args
Returns
Type Description
Block

SetBlock<T>(WrappedWorldPosition3i, PersistentChunk, Object[])

If you know the chunk you can pass it to avoid lookup for better performance

Declaration
public static T SetBlock<T>(WrappedWorldPosition3i worldPos, PersistentChunk chunk = null, params object[] args)
    where T : Block
Parameters
Type Name Description
WrappedWorldPosition3i worldPos
PersistentChunk chunk
System.Object[] args
Returns
Type Description
T
Type Parameters
Name Description
T

SetBlock<T>(WrappedWorldPosition3i, Object[])

Declaration
public static T SetBlock<T>(WrappedWorldPosition3i worldPos, params object[] args)
    where T : Block
Parameters
Type Name Description
WrappedWorldPosition3i worldPos
System.Object[] args
Returns
Type Description
T
Type Parameters
Name Description
T

Unlock()

Declaration
public static void Unlock()

WaterAtTop(Vector2i)

Check the cached water and block heights to see if this position is water at the top block.

Declaration
public static bool WaterAtTop(Vector2i pos)
Parameters
Type Name Description
Vector2i pos
Returns
Type Description
System.Boolean

WorldWrapChunkPos(Vector3i)

Ensures the given ChunkPos is world-wrapped.

Declaration
public static Vector3i WorldWrapChunkPos(Vector3i chunkPos)
Parameters
Type Name Description
Vector3i chunkPos
Returns
Type Description
Vector3i

XZChunks(Vector2i)

Declaration
public static IEnumerable<PersistentChunk> XZChunks(Vector2i columnPos)
Parameters
Type Name Description
Vector2i columnPos
Returns
Type Description
System.Collections.Generic.IEnumerable<PersistentChunk>
☀
☾
In This Article
Back to top
Copyright (c) Strange Loop Games 2021
☀
☾