Class NestedModifier
Replaces every cell in one grid (the chunk grid) with a collection of cells from lazily computed child grids.
Inheritance
System.Object
NestedModifier
Assembly: Sylves.dll
Syntax
public abstract class NestedModifier : Object, IGrid
Constructors
NestedModifier()
Declaration
protected NestedModifier()
NestedModifier(IGrid, IEnumerable<ICellType>, ICachePolicy)
Applies NestedModifier to chunkGrid.
Declaration
public NestedModifier(IGrid chunkGrid, IEnumerable<ICellType> cellTypes = null, ICachePolicy cachePolicy = null)
Parameters
Type |
Name |
Description |
IGrid |
chunkGrid |
The base grid
|
System.Collections.Generic.IEnumerable<ICellType> |
cellTypes |
What should the response of GetCellType
|
ICachePolicy |
cachePolicy |
Configures how to store the cahced meshes.
|
NestedModifier(NestedModifier, IGrid)
Clone constructor. Clones share the same cache!
Declaration
protected NestedModifier(NestedModifier original, IGrid chunkGrid = null)
Parameters
Properties
CachePolicy
Declaration
protected ICachePolicy CachePolicy { get; }
Property Value
ChunkGrid
Declaration
protected IGrid ChunkGrid { get; }
Property Value
CoordinateDimension
Declaration
public virtual int CoordinateDimension { get; }
Property Value
Type |
Description |
System.Int32 |
|
IndexCount
Declaration
public int IndexCount { get; }
Property Value
Type |
Description |
System.Int32 |
|
Is2d
Declaration
public virtual bool Is2d { get; }
Property Value
Type |
Description |
System.Boolean |
|
Is3d
Declaration
public virtual bool Is3d { get; }
Property Value
Type |
Description |
System.Boolean |
|
IsFinite
Declaration
public virtual bool IsFinite { get; }
Property Value
Type |
Description |
System.Boolean |
|
IsOrientable
Declaration
public virtual bool IsOrientable { get; }
Property Value
Type |
Description |
System.Boolean |
|
IsPlanar
Declaration
public virtual bool IsPlanar { get; }
Property Value
Type |
Description |
System.Boolean |
|
IsRepeating
Declaration
public virtual bool IsRepeating { get; }
Property Value
Type |
Description |
System.Boolean |
|
IsSingleCellType
Declaration
public virtual bool IsSingleCellType { get; }
Property Value
Type |
Description |
System.Boolean |
|
Unbounded
Declaration
public abstract IGrid Unbounded { get; }
Property Value
Unwrapped
Declaration
public IGrid Unwrapped { get; }
Property Value
Methods
BoundBy(IBound)
Declaration
public abstract IGrid BoundBy(IBound bound)
Parameters
Type |
Name |
Description |
IBound |
bound |
|
Returns
Combine(Cell, Cell)
Declaration
protected virtual Cell Combine(Cell childCell, Cell chunkCell)
Parameters
Type |
Name |
Description |
Cell |
childCell |
|
Cell |
chunkCell |
|
Returns
FindBasicPath(Cell, Cell)
Declaration
public IEnumerable<(Cell, CellDir)> FindBasicPath(Cell startCell, Cell destCell)
Parameters
Type |
Name |
Description |
Cell |
startCell |
|
Cell |
destCell |
|
Returns
Type |
Description |
System.Collections.Generic.IEnumerable<System.ValueTuple<Cell, CellDir>> |
|
FindCell(Matrix4x4, out Cell, out CellRotation)
Declaration
public bool FindCell(Matrix4x4 matrix, out Cell cell, out CellRotation rotation)
Parameters
Returns
Type |
Description |
System.Boolean |
|
FindCell(Vector3, out Cell)
Declaration
public bool FindCell(Vector3 position, out Cell cell)
Parameters
Returns
Type |
Description |
System.Boolean |
|
FindGridSymmetry(ISet<Cell>, ISet<Cell>, Cell, CellRotation)
Declaration
public GridSymmetry FindGridSymmetry(ISet<Cell> src, ISet<Cell> dest, Cell srcCell, CellRotation cellRotation)
Parameters
Type |
Name |
Description |
System.Collections.Generic.ISet<Cell> |
src |
|
System.Collections.Generic.ISet<Cell> |
dest |
|
Cell |
srcCell |
|
CellRotation |
cellRotation |
|
Returns
GetBound()
Declaration
Returns
GetBound(IEnumerable<Cell>)
Declaration
public IBound GetBound(IEnumerable<Cell> cells)
Parameters
Type |
Name |
Description |
System.Collections.Generic.IEnumerable<Cell> |
cells |
|
Returns
GetCellByIndex(Int32)
Declaration
public Cell GetCellByIndex(int index)
Parameters
Type |
Name |
Description |
System.Int32 |
index |
|
Returns
GetCellCenter(Cell)
Declaration
public Vector3 GetCellCenter(Cell cell)
Parameters
Type |
Name |
Description |
Cell |
cell |
|
Returns
GetCellCorner(Cell, CellCorner)
Declaration
public Vector3 GetCellCorner(Cell cell, CellCorner cellCorner)
Parameters
Returns
GetCellCorners(Cell)
Declaration
public IEnumerable<CellCorner> GetCellCorners(Cell cell)
Parameters
Type |
Name |
Description |
Cell |
cell |
|
Returns
Type |
Description |
System.Collections.Generic.IEnumerable<CellCorner> |
|
GetCellDirs(Cell)
Declaration
public IEnumerable<CellDir> GetCellDirs(Cell cell)
Parameters
Type |
Name |
Description |
Cell |
cell |
|
Returns
Type |
Description |
System.Collections.Generic.IEnumerable<CellDir> |
|
GetCells()
Declaration
public IEnumerable<Cell> GetCells()
Returns
Type |
Description |
System.Collections.Generic.IEnumerable<Cell> |
|
GetCellsInBounds(IBound)
Declaration
public IEnumerable<Cell> GetCellsInBounds(IBound bound)
Parameters
Type |
Name |
Description |
IBound |
bound |
|
Returns
Type |
Description |
System.Collections.Generic.IEnumerable<Cell> |
|
GetCellsIntersectsApprox(Vector3, Vector3)
Declaration
public IEnumerable<Cell> GetCellsIntersectsApprox(Vector3 min, Vector3 max)
Parameters
Returns
Type |
Description |
System.Collections.Generic.IEnumerable<Cell> |
|
GetCellType(Cell)
Declaration
public ICellType GetCellType(Cell cell)
Parameters
Type |
Name |
Description |
Cell |
cell |
|
Returns
GetCellTypes()
Declaration
public virtual IEnumerable<ICellType> GetCellTypes()
Returns
Type |
Description |
System.Collections.Generic.IEnumerable<ICellType> |
|
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 abstract IGrid GetChildGrid(Cell chunkCell)
Parameters
Type |
Name |
Description |
Cell |
chunkCell |
|
Returns
GetChildGridCached(Cell)
Declaration
protected IGrid GetChildGridCached(Cell chunkCell)
Parameters
Type |
Name |
Description |
Cell |
chunkCell |
|
Returns
Declaration
public Deformation GetDeformation(Cell cell)
Parameters
Type |
Name |
Description |
Cell |
cell |
|
Returns
GetDual()
Declaration
public virtual IDualMapping GetDual()
Returns
GetIndex(Cell)
Declaration
public int GetIndex(Cell cell)
Parameters
Type |
Name |
Description |
Cell |
cell |
|
Returns
Type |
Description |
System.Int32 |
|
GetMeshData(Cell, out MeshData, out Matrix4x4)
Declaration
public void GetMeshData(Cell cell, out MeshData meshData, out Matrix4x4 transform)
Parameters
GetPolygon(Cell, out Vector3[], out Matrix4x4)
Declaration
public void GetPolygon(Cell cell, out Vector3[] vertices, out Matrix4x4 transform)
Parameters
GetTriangleMesh(Cell)
Declaration
public IEnumerable<(Vector3, Vector3, Vector3, CellDir)> GetTriangleMesh(Cell cell)
Parameters
Type |
Name |
Description |
Cell |
cell |
|
Returns
GetTRS(Cell)
Declaration
public TRS GetTRS(Cell cell)
Parameters
Type |
Name |
Description |
Cell |
cell |
|
Returns
IntersectBounds(IBound, IBound)
Declaration
public IBound IntersectBounds(IBound bound, IBound other)
Parameters
Returns
IsCellInBound(Cell, IBound)
Declaration
public bool IsCellInBound(Cell cell, IBound bound)
Parameters
Returns
Type |
Description |
System.Boolean |
|
IsCellInGrid(Cell)
Declaration
public bool IsCellInGrid(Cell cell)
Parameters
Type |
Name |
Description |
Cell |
cell |
|
Returns
Type |
Description |
System.Boolean |
|
MeshTranslation(Cell)
Declaration
protected virtual Vector3 MeshTranslation(Cell chunkCell)
Parameters
Type |
Name |
Description |
Cell |
chunkCell |
|
Returns
ParallelTransport(IGrid, Cell, Cell, Cell, CellRotation, out Cell, out CellRotation)
Declaration
public bool ParallelTransport(IGrid aGrid, Cell aSrcCell, Cell aDestCell, Cell srcCell, CellRotation startRotation, out Cell destCell, out CellRotation destRotation)
Parameters
Returns
Type |
Description |
System.Boolean |
|
Raycast(Vector3, Vector3, Single)
Declaration
public IEnumerable<RaycastInfo> Raycast(Vector3 origin, Vector3 direction, float maxDistance = InfinityF)
Parameters
Type |
Name |
Description |
Vector3 |
origin |
|
Vector3 |
direction |
|
System.Single |
maxDistance |
|
Returns
Type |
Description |
System.Collections.Generic.IEnumerable<RaycastInfo> |
|
Setup(IGrid, IEnumerable<ICellType>, ICachePolicy)
Declaration
protected void Setup(IGrid chunkGrid, IEnumerable<ICellType> cellTypes = null, ICachePolicy cachePolicy = null)
Parameters
Split(Cell)
Declaration
protected virtual (Cell, Cell) Split(Cell cell)
Parameters
Type |
Name |
Description |
Cell |
cell |
|
Returns
Type |
Description |
System.ValueTuple<Cell, Cell> |
|
TryApplySymmetry(GridSymmetry, Cell, out Cell, out CellRotation)
Declaration
public bool TryApplySymmetry(GridSymmetry s, Cell src, out Cell dest, out CellRotation r)
Parameters
Returns
Type |
Description |
System.Boolean |
|
TryApplySymmetry(GridSymmetry, IBound, out IBound)
Declaration
public bool TryApplySymmetry(GridSymmetry s, IBound srcBound, out IBound destBound)
Parameters
Returns
Type |
Description |
System.Boolean |
|
TryMove(Cell, CellDir, out Cell, out CellDir, out Connection)
Declaration
public virtual bool TryMove(Cell cell, CellDir dir, out Cell dest, out CellDir inverseDir, out Connection connection)
Parameters
Returns
Type |
Description |
System.Boolean |
|
TryMoveByOffset(Cell, Vector3Int, Vector3Int, CellRotation, out Cell, out CellRotation)
Declaration
public bool TryMoveByOffset(Cell startCell, Vector3Int startOffset, Vector3Int destOffset, CellRotation startRotation, out Cell destCell, out CellRotation destRotation)
Parameters
Returns
Type |
Description |
System.Boolean |
|
UnionBounds(IBound, IBound)
Declaration
public IBound UnionBounds(IBound bound, IBound other)
Parameters
Returns
Implements