public List <HeatNode> FindNodesAtDistance(int distanceOutward, List <HeatNode> fromList) { List <HeatNode> retNodes = new List <HeatNode>(); int countNeg = 0; int countPos = 0; for (int i = -distanceOutward; i <= 0; i++) { HeatNode posNode = fromList.Find(k => k.Collumn == Collumn + i && k.Row == Row + countNeg); if (posNode) { retNodes.Add(posNode); } if (countNeg != 0) { HeatNode negNode = fromList.Find(k => k.Collumn == Collumn + i && k.Row == Row - countNeg); if (negNode) { retNodes.Add(negNode); } } countNeg++; } for (int i = distanceOutward; i > 0; i--) { HeatNode posBox = fromList.Find(k => k.Collumn == Collumn + i && k.Row == Row + countPos); if (posBox) { retNodes.Add(posBox); } if (countPos != 0) { HeatNode negBox = fromList.Find(k => k.Collumn == Collumn + i && k.Row == Row - countPos); if (negBox) { retNodes.Add(negBox); } } countPos++; } return(retNodes); }
private IEnumerator GridGenerator() { LoadingPercentage = 0; IsLoading = true; ConnectedNodes = new List <HeatNode>(); int row = 0; int collumn = 0; for (int i = 0; i <= Width; i += Interval, collumn += 1) { for (int n = 0; n <= Height; n += Interval, row += 1) { GameObject obj; if (HeatNodePrefab) { obj = Instantiate(HeatNodePrefab); } else { obj = new GameObject(); } obj.transform.SetParent(transform); obj.transform.position = new Vector3(i, 0, n); HeatNode newNode = obj.AddComponent <HeatNode>(); newNode.OnCreate(collumn, row, new Vector3(i, 0, n), DisplayLayers); ConnectedNodes.Add(newNode); if ((i + n) % InstantiateBatchSize == 0) { yield return(null); } } LoadingPercentage = ((float)i / Width) * 50; row = 0; } yield return(null); StartCoroutine(FindNeighbors()); yield return(null); }