private void ReadData(Sprite sprite) { for (int y = _yMax - 1; y >= _yMin; y--) { for (int x = _xMin; x < _xMax; x++) { if (sprite.texture.GetPixel(x, y).a > 0.0f) { _pixels[x, y] = new PixelDataHigh(x, y, _size); var stripe = new MeshStripeHigh(_pixels[x, y]); x++; while (sprite.texture.GetPixel(x, y).a > 0.0f && x < _xMax) { _pixels[x, y] = new PixelDataHigh(x, y, _size); stripe.AddPixelToTheStripe(_pixels[x, y]); x++; } bool any = false; foreach (var s in _stripes) { if (s.MergeableToTheBottom(stripe)) { any = true; break; } } if (!any) { _stripes.Add(stripe); } } } } for (int y = _yMax - 1; y >= _yMin; y--) { for (int x = _xMin; x < _xMax; x++) { if (_pixels[x, y] == null) { continue; } _pixels[x, y].TopCovered = y != _yMax - 1 && _pixels[x, y + 1] != null; _pixels[x, y].RightCovered = x != _xMax - 1 && _pixels[x + 1, y] != null; _pixels[x, y].LeftCovered = x != _xMin && _pixels[x - 1, y] != null; _pixels[x, y].BottomCovered = y != _yMin && _pixels[x, y - 1] != null; } } }