Esempio n. 1
0
		public SetIterator(GridSet<T> _set)
		{
			set = _set;
			posIterator = new Vector2i.Iterator(set.grid.SizeXY());
			cellIterator = new CellIterator();
			reset = true;
		}
Esempio n. 2
0
		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();
		}
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
 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));
 }
Esempio n. 6
0
        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;
                }
            }
        }
Esempio n. 7
0
        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;
                }
            }
        }