コード例 #1
0
ファイル: BackendUtil.cs プロジェクト: sarkahn/terminals
        static public void RebuildTileDataRange(int min, int max,
                                                TileData tiles,
                                                NativeArray <VertTileData> vertData)
        {
            float2 uvSize  = 1f / 16f;
            float2 uvRight = new float2(uvSize.x, 0);
            float2 uvUp    = new float2(0, uvSize.y);

            //0-1
            //|/|
            //2-3
            for (int tileIndex = min; tileIndex < max; ++tileIndex)
            {
                var tile = tiles[tileIndex];

                int vi = tileIndex * 4; // Vert Index

                int glyph = tile.glyph;

                // UVs
                int2 glyphIndex = new int2(
                    glyph % 16,
                    // Y is flipped on the spritesheet
                    16 - 1 - (glyph / 16));
                float2 uvOrigin = (float2)glyphIndex * uvSize;

                var fg = FromColor(tile.fgColor);
                var bg = FromColor(tile.bgColor);

                vertData[vi + 0] = new VertTileData
                {
                    UV      = uvOrigin + uvUp,
                    FGColor = fg,
                    BGColor = bg
                };
                vertData[vi + 1] = new VertTileData
                {
                    UV      = uvOrigin + uvRight + uvUp,
                    FGColor = fg,
                    BGColor = bg
                };
                vertData[vi + 2] = new VertTileData
                {
                    UV      = uvOrigin,
                    FGColor = fg,
                    BGColor = bg
                };
                vertData[vi + 3] = new VertTileData
                {
                    UV      = uvOrigin + uvRight,
                    FGColor = fg,
                    BGColor = bg
                };
            }
        }
コード例 #2
0
        static void WriteTilesRange(int min, int max, MeshData meshData, TileData tiles)
        {
            var tileData = meshData.GetVertexData <VertTileData>(2);

            //Debug.Log($"TileData job Setting tile data from {startIndex} to {startIndex + count}. Tiles length {Tiles.Length}");

            //0-1
            //|/|
            //2-3
            for (int tileIndex = min; tileIndex < max; ++tileIndex)
            {
                var tile = tiles[tileIndex];

                int vi = tileIndex * 4; // Vert Index

                int glyph = tile.glyph;

                // UVs
                int2 glyphIndex = new int2(
                    glyph % 16,
                    // Y is flipped on the spritesheet
                    16 - 1 - (glyph / 16));
                float2 uvOrigin = (float2)glyphIndex * UvSize;

                var fg = tile.fgColor;
                var bg = tile.bgColor;

                tileData[vi + 0] = new VertTileData
                {
                    UV      = uvOrigin + UvUp,
                    FGColor = FromColor(fg),
                    BGColor = FromColor(bg)
                };
                tileData[vi + 1] = new VertTileData
                {
                    UV      = uvOrigin + UvRight + UvUp,
                    FGColor = FromColor(fg),
                    BGColor = FromColor(bg)
                };
                tileData[vi + 2] = new VertTileData
                {
                    UV      = uvOrigin,
                    FGColor = FromColor(fg),
                    BGColor = FromColor(bg)
                };
                tileData[vi + 3] = new VertTileData
                {
                    UV      = uvOrigin + UvRight,
                    FGColor = FromColor(fg),
                    BGColor = FromColor(bg)
                };
            }
        }
コード例 #3
0
            public void Execute(int startIndex, int count)
            {
                var tileData = MeshData.GetVertexData <VertTileData>(2);

                //0-1
                //|/|
                //2-3
                for (int tileIndex = startIndex; tileIndex < startIndex + count; ++tileIndex)
                {
                    var tile = Tiles[tileIndex];

                    int vi = tileIndex * 4; // Vert Index

                    int glyph = tile.glyph;

                    // UVs
                    int2 glyphIndex = new int2(
                        glyph % 16,
                        // Y is flipped on the spritesheet
                        16 - 1 - (glyph / 16));
                    float2 uvOrigin = (float2)glyphIndex * UvSize;

                    var fg = tile.fgColor;
                    var bg = tile.bgColor;

                    tileData[vi + 0] = new VertTileData
                    {
                        UV      = uvOrigin + UvUp,
                        FGColor = FromColor(fg),
                        BGColor = FromColor(bg)
                    };
                    tileData[vi + 1] = new VertTileData
                    {
                        UV      = uvOrigin + UvRight + UvUp,
                        FGColor = FromColor(fg),
                        BGColor = FromColor(bg)
                    };
                    tileData[vi + 2] = new VertTileData
                    {
                        UV      = uvOrigin,
                        FGColor = FromColor(fg),
                        BGColor = FromColor(bg)
                    };
                    tileData[vi + 3] = new VertTileData
                    {
                        UV      = uvOrigin + UvRight,
                        FGColor = FromColor(fg),
                        BGColor = FromColor(bg)
                    };
                }
            }