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);
        }