Пример #1
0
        private void Calculate(List <BitArray> unpackedImage, List <BitArray> previousUnpackedImage, PhotonLayer photonLayer)
        {
            islandRows   = new List <BitArray>();
            isLandsCount = 0;

            photonLayer.Clear();

            for (int y = 0; y < unpackedImage.Count; y++)
            {
                BitArray currentRow = unpackedImage[y];
                BitArray prevRow    = previousUnpackedImage?[y];
                if (currentRow != null)
                {
                    int x = 0;
                    while ((x = currentRow.NextSetBit(x)) >= 0)
                    {
                        if (prevRow == null || prevRow[x])
                        {
                            photonLayer.Supported(x, y);
                        }
                        else
                        {
                            photonLayer.Island(x, y);
                        }
                        ++x;
                    }
                }
            }

            photonLayer.Reduce();

            isLandsCount = photonLayer.SetIslands(islandRows);
        }
Пример #2
0
 public void SaveLayer(PhotonLayer photonLayer)
 {
     this.packedLayerImage = photonLayer.PackLayerImage();
     this.imageData        = photonLayer.PackImageData();
     this.dataSize         = imageData.Length;
     islandRows            = new List <BitArray>();
     isLandsCount          = photonLayer.SetIslands(islandRows);
 }
Пример #3
0
 public void UpdateLayerIslands(PhotonLayer photonLayer)
 {
     islandRows   = new List <BitArray>();
     isLandsCount = photonLayer.SetIslands(islandRows);
 }