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 }; } }
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) }; } }
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) }; } }