コード例 #1
0
    public static void Paint(int framePixelSize, int frameCount, MaskFramePainter maskPainter, string fileName)
    {
        int imageCols = 8;
        int imageRows = frameCount / imageCols;

        Texture2D tex = new Texture2D(imageCols * framePixelSize, imageRows * framePixelSize, TextureFormat.RGB24, false);

        DrawSpriteSheet(tex, frameCount, framePixelSize, imageCols, maskPainter);
        SaveTexture(tex, fileName);
    }
コード例 #2
0
    private static void DrawSpriteSheet(
        Texture2D tex,
        int frameCount, int framePixelSize, int frameCols,
        MaskFramePainter maskPainter)
    {
        float frameProgress = 1.0f / (float)frameCount;

        for (int i = 0; i != frameCount; ++i)
        {
            Vector2Int frameStart = new Vector2Int(
                framePixelSize * (i % frameCols),
                framePixelSize * (i / frameCols)
                );

            float currentProgress = (float)i * frameProgress;

            DrawFrame(tex, frameStart, framePixelSize, maskPainter, currentProgress);
        }

        tex.Apply();
    }
コード例 #3
0
    private static void DrawFrame(Texture2D tex, Vector2Int frameStart, int framePixelSize, MaskFramePainter maskPainter, float progress)
    {
        float onePixelRelativeToFrameSize = 1.0f / framePixelSize;

        for (int y = 0; y != framePixelSize; ++y)
        {
            for (int x = 0; x != framePixelSize; ++x)
            {
                Color color = maskPainter(
                    new Vector2(x * onePixelRelativeToFrameSize, y * onePixelRelativeToFrameSize),
                    progress
                    ) ? Color.white : Color.black;

                tex.SetPixel(frameStart.x + x, frameStart.y + y, color);
            }
        }
    }