Ejemplo n.º 1
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)
                };
            }
        }
Ejemplo n.º 2
0
        static void WriteVertsRange(int min, int max, MeshData meshData, int2 size, float aspect)
        {
            var pos = meshData.GetVertexData <float3>(0);
            var idx = meshData.GetIndexData <ushort>();

            float3 start = -new float3(size.x, size.y, 0) * .5f;

            float3 vertRight = new float3(aspect, 0, 0);
            float3 vertUp    = new float3(0, 1, 0);

            //Debug.Log($"VertsJob Settings verts from {min} to {max}. Total size: {size.x * size.y}");

            for (int tileIndex = min; tileIndex < max; ++tileIndex)
            {
                int vi = tileIndex * 4; // Vert Index
                int ti = tileIndex * 6; // Triangle index

                // Positions
                int2   xy      = IndexToPos(tileIndex, size.x);
                float3 vOrigin = new float3(xy, 0);
                vOrigin.x *= vertRight.x;

                pos[vi + 0] = start + vOrigin + vertUp;
                pos[vi + 1] = start + vOrigin + vertRight + vertUp;
                pos[vi + 2] = start + vOrigin;
                pos[vi + 3] = start + vOrigin + vertRight;

                // Indices
                idx[ti + 0] = (ushort)(vi + 0);
                idx[ti + 1] = (ushort)(vi + 1);
                idx[ti + 2] = (ushort)(vi + 2);
                idx[ti + 3] = (ushort)(vi + 3);
                idx[ti + 4] = (ushort)(vi + 2);
                idx[ti + 5] = (ushort)(vi + 1);
            }
        }
Ejemplo n.º 3
0
 static void SetSubMesh(MeshData meshData)
 {
     meshData.subMeshCount = 1;
     meshData.SetSubMesh(0, new SubMeshDescriptor(0,
                                                  meshData.GetIndexData <ushort>().Length));
 }