public SetIterator(GridSet<T> _set) { set = _set; posIterator = new Vector2i.Iterator(set.grid.SizeXY()); cellIterator = new CellIterator(); reset = true; }
public bool MoveNext() { bool done = false; if (reset) { done = posIterator.MoveNext(); if (!done) cellIterator = new CellIterator(set.grid.Get(posIterator.Current)); } return !done && !cellIterator.MoveNext(); }
public void Develop(Root plantPart, SimulationStateSnapshot snapshot) { var descriptor = plantDescriptorService.Describe(plantPart, false); if (ShouldGrow(plantPart, descriptor, snapshot)) { CellIterator.IterateCells(plantPart.Cells, cell => cellGrower.GrowRootCell(cell, plantPart, snapshot)); } if (ShouldAddLateralRoot(plantPart, descriptor, snapshot)) { var newRoot = CreateNewRoot(descriptor, plantPart); plantPart.ConnectRoot(newRoot); } }
public void SetUp() { cells = new List<Cell> { new Cell { Y = 0, X = 0, Value = '.', IsAlive = false }, new Cell { Y = 0, X = 1, Value = '.', IsAlive = false }, new Cell { Y = 0, X = 2, Value = '.', IsAlive = false }, new Cell { Y = 0, X = 3, Value = '.', IsAlive = false }, new Cell { Y = 0, X = 4, Value = '.', IsAlive = false }, new Cell { Y = 0, X = 5, Value = '.', IsAlive = false }, new Cell { Y = 0, X = 6, Value = '.', IsAlive = false }, new Cell { Y = 0, X = 7, Value = '.', IsAlive = false }, new Cell { Y = 1, X = 0, Value = '.', IsAlive = false }, new Cell { Y = 1, X = 1, Value = '.', IsAlive = false }, new Cell { Y = 1, X = 2, Value = '.', IsAlive = false }, new Cell { Y = 1, X = 3, Value = '.', IsAlive = false }, new Cell { Y = 1, X = 4, Value = '*', IsAlive = true }, new Cell { Y = 1, X = 5, Value = '.', IsAlive = false }, new Cell { Y = 1, X = 6, Value = '.', IsAlive = false }, new Cell { Y = 1, X = 7, Value = '.', IsAlive = false }, new Cell { Y = 2, X = 0, Value = '.', IsAlive = false }, new Cell { Y = 2, X = 1, Value = '.', IsAlive = false }, new Cell { Y = 2, X = 2, Value = '.', IsAlive = false }, new Cell { Y = 2, X = 3, Value = '*', IsAlive = true }, new Cell { Y = 2, X = 4, Value = '*', IsAlive = true }, new Cell { Y = 2, X = 5, Value = '.', IsAlive = false }, new Cell { Y = 2, X = 6, Value = '.', IsAlive = false }, new Cell { Y = 2, X = 7, Value = '.', IsAlive = false }, new Cell { Y = 3, X = 0, Value = '.', IsAlive = false }, new Cell { Y = 3, X = 1, Value = '.', IsAlive = false }, new Cell { Y = 3, X = 2, Value = '.', IsAlive = false }, new Cell { Y = 3, X = 3, Value = '.', IsAlive = false }, new Cell { Y = 3, X = 4, Value = '.', IsAlive = false }, new Cell { Y = 3, X = 5, Value = '.', IsAlive = false }, new Cell { Y = 3, X = 6, Value = '.', IsAlive = false }, new Cell { Y = 3, X = 7, Value = '.', IsAlive = false } }; cellIterator = new CellIterator(); cellIterator.Initialize(cells); }
private void GrowInternode(Internode internode, SimulationStateSnapshot snapshot) { CellIterator.IterateCells(internode.Cells, cell => cellGrower.GrowShootCell(cell, internode, snapshot)); }
private void CreateMap() { var wh = MapSize.Width + MapSize.Height - 1; var lineBaseOffset = 0; for (var v2 = 0; v2 < 2 * wh + 2; ++v2) { for (var v1 = 0; v1 < wh + 2; ++v1) { var v3 = v1 + v2; var v4 = MapRect.Width; if (v3 > v4) { if (v1 - v2 < v4) { if (v2 - v1 < v4) { if (v3 <= v4 + 2 * MapRect.Height) { var cell = new CellClass() { X = v1, Y = v2, Level = 0 }; Cells[v1 + lineBaseOffset] = cell; } } } } } lineBaseOffset += 512; } cellIter = new CellIterator(this); foreach (var c in cellIter.Range()) { var x = c.X; var y = c.Y; var W = MapSize.Width; if (x + y < W - 2 * MapSize.Top + 1 || y - x > W + 2 * MapSize.Left - 1 || x + y > W + 2 * ((2 * MapSize.Height - 8) - MapSize.Top) || x - y > W + 2 * (- MapSize.Left - 1)) { var idxCell = x + (y << 9); var newC = new CellClass() { X = x, Y = y, IsoTileTypeIndex = 65535, IsoTileTypeSubIndex = 0, Slope = 0, OverlayTypeIndex = -1, Level = 0 }; Cells[idxCell] = newC; } } }
private void CreateMap() { var wh = MapSize.Width + MapSize.Height - 1; var lineBaseOffset = 0; for (var v2 = 0; v2 < 2 * wh + 2; ++v2) { for (var v1 = 0; v1 < wh + 2; ++v1) { var v3 = v1 + v2; var v4 = MapRect.Width; if (v3 > v4) { if (v1 - v2 < v4) { if (v2 - v1 < v4) { if (v3 <= v4 + 2 * MapRect.Height) { var cell = new CellClass() { X = v1, Y = v2, Level = 0 }; Cells[v1 + lineBaseOffset] = cell; } } } } } lineBaseOffset += 512; } cellIter = new CellIterator(this); foreach (var c in cellIter.Range()) { var x = c.X; var y = c.Y; var W = MapSize.Width; if (x + y < W - 2 * MapSize.Top + 1 || y - x > W + 2 * MapSize.Left - 1 || x + y > W + 2 * ((2 * MapSize.Height - 8) - MapSize.Top) || x - y > W + 2 * (-MapSize.Left - 1)) { var idxCell = x + (y << 9); var newC = new CellClass() { X = x, Y = y, IsoTileTypeIndex = 65535, IsoTileTypeSubIndex = 0, Slope = 0, OverlayTypeIndex = -1, Level = 0 }; Cells[idxCell] = newC; } } }