Show / Hide Table of Contents

Class RelaxModifier

Applies relaxation to an infinite 2d plane, similar to MeshDataOperations.Relax.

Inheritance
object
NestedModifier
PlanarLazyGrid
RelaxModifier
TownscaperGrid
Implements
IGrid
Inherited Members
PlanarLazyGrid.Setup(Vector2, Vector2, Vector2, Vector2, bool, SquareBound, IEnumerable<ICellType>, ICachePolicy)
PlanarLazyGrid.ChunkOffset(Cell)
PlanarLazyGrid.MeshTranslation(Cell)
PlanarLazyGrid.GetDual()
PlanarLazyGrid.GetDiagonalGrid()
PlanarLazyGrid.StrideX
PlanarLazyGrid.StrideY
PlanarLazyGrid.AabbBottomLeft
PlanarLazyGrid.AabbSize
NestedModifier.Setup(IGrid, IEnumerable<ICellType>, ICachePolicy)
NestedModifier.GetChildGridCached(Cell)
NestedModifier.GetCompactGrid()
NestedModifier.Recenter(Cell)
NestedModifier.GetCells()
NestedModifier.GetCellType(Cell)
NestedModifier.IsCellInGrid(Cell)
NestedModifier.TryMoveByOffset(Cell, Vector3Int, Vector3Int, CellRotation, out Cell, out CellRotation)
NestedModifier.ParallelTransport(IGrid, Cell, Cell, Cell, CellRotation, out Cell, out CellRotation)
NestedModifier.GetCellDirs(Cell)
NestedModifier.GetCellCorners(Cell)
NestedModifier.FindBasicPath(Cell, Cell)
NestedModifier.GetIndex(Cell)
NestedModifier.GetCellByIndex(int)
NestedModifier.GetBound()
NestedModifier.GetBound(IEnumerable<Cell>)
NestedModifier.IntersectBounds(IBound, IBound)
NestedModifier.UnionBounds(IBound, IBound)
NestedModifier.GetCellsInBounds(IBound)
NestedModifier.IsCellInBound(Cell, IBound)
NestedModifier.GetBoundAabb(IBound)
NestedModifier.GetCellCenter(Cell)
NestedModifier.GetCellCorner(Cell, CellCorner)
NestedModifier.GetTRS(Cell)
NestedModifier.GetDeformation(Cell)
NestedModifier.GetPolygon(Cell, out Vector3[], out Matrix4x4)
NestedModifier.GetTriangleMesh(Cell)
NestedModifier.GetMeshData(Cell, out MeshData, out Matrix4x4)
NestedModifier.GetAabb(Cell)
NestedModifier.GetAabb(IEnumerable<Cell>)
NestedModifier.FindCell(Vector3, out Cell)
NestedModifier.FindCell(Matrix4x4, out Cell, out CellRotation)
NestedModifier.GetCellsIntersectsApprox(Vector3, Vector3)
NestedModifier.Raycast(Vector3, Vector3, float)
NestedModifier.FindGridSymmetry(ISet<Cell>, ISet<Cell>, Cell, CellRotation)
NestedModifier.TryApplySymmetry(GridSymmetry, IBound, out IBound)
NestedModifier.TryApplySymmetry(GridSymmetry, Cell, out Cell, out CellRotation)
NestedModifier.ChunkGrid
NestedModifier.CachePolicy
NestedModifier.Unwrapped
NestedModifier.IndexCount
object.ToString()
object.Equals(object)
object.Equals(object, object)
object.ReferenceEquals(object, object)
object.GetHashCode()
object.GetType()
object.MemberwiseClone()
Namespace: Sylves
Assembly: Sylves.dll
Syntax
public class RelaxModifier : PlanarLazyGrid, IGrid

Constructors

RelaxModifier(IGrid, float, float, int, ICachePolicy)

Declaration
public RelaxModifier(IGrid underlying, float chunkSize = 10, float weldTolerance = 1E-07, int relaxIterations = 3, ICachePolicy cachePolicy = null)
Parameters
Type Name Description
IGrid underlying
float chunkSize
float weldTolerance
int relaxIterations
ICachePolicy cachePolicy

Properties

CoordinateDimension

Returns the number of co-ordinates needed to identify a cell. i.e. dim 1 means cell.y === 0 and cell.z === 0 dim 2 means cell.z === 0 dim 3 means all three co-ordinates are relevant.

Declaration
public override int CoordinateDimension { get; }
Property Value
Type Description
int
Overrides
NestedModifier.CoordinateDimension

Is2d

True if this grid uses 2d cell types

Declaration
public override bool Is2d { get; }
Property Value
Type Description
bool
Overrides
NestedModifier.Is2d

Is3d

True if this grid uses 3d cell types

Declaration
public override bool Is3d { get; }
Property Value
Type Description
bool
Overrides
NestedModifier.Is3d

IsFinite

True if there is a finite amout of cells in the grid.

Declaration
public override bool IsFinite { get; }
Property Value
Type Description
bool
Overrides
NestedModifier.IsFinite

IsOrientable

True if tile connections never set Mirror to true.

Declaration
public override bool IsOrientable { get; }
Property Value
Type Description
bool
Overrides
NestedModifier.IsOrientable

IsPlanar

True if this grid uses 2d cell types, and all cells fit in the XY plane.

Declaration
public override bool IsPlanar { get; }
Property Value
Type Description
bool
Overrides
NestedModifier.IsPlanar

IsRepeating

True for grids that are some fixed pattern repeated over and over.

Declaration
public override bool IsRepeating { get; }
Property Value
Type Description
bool
Overrides
NestedModifier.IsRepeating

IsSingleCellType

True if GetCellTypes always returns a single value.

Declaration
public override bool IsSingleCellType { get; }
Property Value
Type Description
bool
Overrides
NestedModifier.IsSingleCellType

Unbounded

Returns the grid with any bounds removed.

Declaration
public override IGrid Unbounded { get; }
Property Value
Type Description
IGrid
Overrides
NestedModifier.Unbounded

Methods

BoundBy(IBound)

Returns a new grid restricted to just the given bound. If the grid already has a bound, the new grid will have the intersection of both.

Declaration
public override IGrid BoundBy(IBound bound)
Parameters
Type Name Description
IBound bound
Returns
Type Description
IGrid
Overrides
NestedModifier.BoundBy(IBound)

Combine(Cell, Cell)

Declaration
protected override Cell Combine(Cell childCell, Cell chunkCell)
Parameters
Type Name Description
Cell childCell
Cell chunkCell
Returns
Type Description
Cell
Overrides
NestedModifier.Combine(Cell, Cell)

GetAdjacentChunks(Cell)

Declaration
protected override IEnumerable<Cell> GetAdjacentChunks(Cell chunkCell)
Parameters
Type Name Description
Cell chunkCell
Returns
Type Description
IEnumerable<Cell>
Overrides
PlanarLazyGrid.GetAdjacentChunks(Cell)

GetCellTypes()

Returns the full list of cell types that can be returned by GetCellType(Cell)

Declaration
public override IEnumerable<ICellType> GetCellTypes()
Returns
Type Description
IEnumerable<ICellType>
Overrides
NestedModifier.GetCellTypes()

GetChildGrid(Cell)

The grid associated with each chunk. This grid has extra requirements:

  • It should only use the x-coordinate of the cell. The other two should be zero, (to be offset by the chunk position)
  • The dest of moves is also offset by the chunk position. Moves may be off grid (illegal in a normal grid)

As building a grid with off-grid moves is difficult, you can also just override TryMove to whatever.

Declaration
protected override IGrid GetChildGrid(Cell chunkCell)
Parameters
Type Name Description
Cell chunkCell
Returns
Type Description
IGrid
Overrides
NestedModifier.GetChildGrid(Cell)

Split(Cell)

Declaration
protected override (Cell childCell, Cell chunkCell) Split(Cell cell)
Parameters
Type Name Description
Cell cell
Returns
Type Description
(Cell childCell, Cell chunkCell)
Overrides
NestedModifier.Split(Cell)

TryMove(Cell, CellDir, out Cell, out CellDir, out Connection)

Attempts to move from a cell in a given direction, and returns information about the move if successful.

Declaration
public override bool TryMove(Cell cell, CellDir dir, out Cell dest, out CellDir inverseDir, out Connection connection)
Parameters
Type Name Description
Cell cell

The cell to move from

CellDir dir

The direction to move in

Cell dest

The cell moved to

CellDir inverseDir

The direction leading back from dest to cell.

Connection connection

A descriptor of how cell-local space relates between cell and dest.

Returns
Type Description
bool
Overrides
NestedModifier.TryMove(Cell, CellDir, out Cell, out CellDir, out Connection)

Implements

IGrid

Extension Methods

GridExtensions.FindCell(IGrid, Vector3)
GridExtensions.GetCellsIntersectsApprox(IGrid, Aabb)
GridExtensions.GetMeshData(IGrid, Cell)
GridExtensions.GetNeighbours(IGrid, Cell)
GridExtensions.GetPolygon(IGrid, Cell)
GridExtensions.Masked(IGrid, ISet<Cell>)
GridExtensions.Masked(IGrid, Func<Cell, bool>, IEnumerable<Cell>)
GridExtensions.Move(IGrid, Cell, CellDir)
GridExtensions.ToMeshData(IGrid)
GridExtensions.ToMeshData(IGrid, IEnumerable<Cell>)
GridExtensions.Transformed(IGrid, Matrix4x4)
In this article
Back to top Generated by DocFX