Beispiel #1
0
    void FillTexture(SpriteRenderer sprite)
    {
        if (!ShouldIgnoreSprite(sprite))
        {
            int width  = (int)sprite.sprite.rect.width;
            int height = (int)sprite.sprite.rect.height;

            Color[] pixels = sprite.sprite.texture.GetPixels((int)sprite.sprite.rect.x, (int)sprite.sprite.rect.y, width, height);

            int offsetX = GetOffsetX(sprite);
            int offsetY = GetOffsetY(sprite);

            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    int index = width * y + x;

                    if (pixels[index].a > 0)
                    {
                        texture.SetPixel(x + offsetX, y + offsetY, pixels[index]);
                    }
                }
            }

            switch (sortMethod)
            {
            case SortMethod.SORTING_ORDER: if (!_sortingSprite || sprite.sortingOrder < _sortingSprite.sortingOrder)
                {
                    _sortingSprite = sprite;
                }
                break;

            case SortMethod.Z_AXIS: if (!_sortingSprite || sprite.transform.position.z > _sortingSprite.transform.position.z)
                {
                    _sortingSprite = sprite;
                }
                break;
            }
        }

        if (!includeChildren)
        {
            return;
        }

        SpriteRendererExt.ForEachChild(sprite, childSprite =>
        {
            FillTexture(childSprite);
            return(true);
        });
    }
Beispiel #2
0
    void FillTexture(SpriteRenderer sprite)
    {
        if (!ShouldIgnoreSprite(sprite))
        {
            if (!childrenOverlap)
            {
                texture.SetPixels32(GetOffsetX(sprite), GetOffsetY(sprite), sprite.sprite.texture.width, sprite.sprite.texture.height, sprite.sprite.texture.GetPixels32());
            }
            else
            {
                int width  = (int)sprite.sprite.rect.width;
                int height = (int)sprite.sprite.rect.height;

                Color[] pixels     = sprite.sprite.texture.GetPixels((int)sprite.sprite.rect.x, (int)sprite.sprite.rect.y, width, height);
                int     pixelCount = pixels.Length;

                int offsetX = GetOffsetX(sprite);
                int offsetY = GetOffsetY(sprite);

                for (int y = 0; y < height; y++)
                {
                    for (int x = 0; x < width; x++)
                    {
                        int index = width * y + x;

                        if (pixels [index].a > 0)
                        {
                            texture.SetPixel(x + offsetX, y + offsetY, pixels [index]);
                        }
                    }
                }
            }

            if (!isIsometric && sprite.sortingOrder < _sortingSprite.sortingOrder)
            {
                _sortingSprite = sprite;
            }
        }

        if (!includeChildren)
        {
            return;
        }

        SpriteRendererExt.ForEachChild(sprite, childSprite => {
            FillTexture(childSprite);
            return(true);
        });
    }