private static void Generate() { #region Pooling; no need to create all those nodes again if (Grid != null) { int min = Grid.Length; CachedGridNodes.EnsureCapacity(min); for (int i = min - 1; i >= 0; i--) { if (LockstepManager.PoolingEnabled) { CachedGridNodes.Add(Grid[i]); } } } if (ScanGrid != null) { int min = ScanGrid.Length; CachedScanNodes.EnsureCapacity(min); for (int i = min - 1; i >= 0; i--) { if (LockstepManager.PoolingEnabled) { CachedScanNodes.Add(ScanGrid[i]); } } } #endregion //long startMem = System.GC.GetTotalMemory (true); ScanGrid = new ScanNode[ScanGridSize]; for (int i = ScanWidth - 1; i >= 0; i--) { for (int j = ScanHeight - 1; j >= 0; j--) { ScanNode node = CachedScanNodes.Count > 0 ? CachedScanNodes.Pop() : new ScanNode(); node.Setup(i, j); ScanGrid [GetScanIndex(i, j)] = node; } } Grid = new GridNode[GridSize]; for (int i = Width - 1; i >= 0; i--) { for (int j = Height - 1; j >= 0; j--) { GridNode node = CachedGridNodes.Count > 0 ? CachedGridNodes.Pop() : new GridNode(); node.Setup(i, j); Grid [GetGridIndex(i, j)] = node; } } //long usedMem = System.GC.GetTotalMemory (true) - startMem; //Debug.Log ("Grid generated using " + usedMem + " Bytes!"); }