Beispiel #1
0
        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;
                }
            }
        }