private void ExtractTrianglesFromCells()
{
int triStartX = -1;
bool startNew = true;
foreach (var line in fullCells)
{
for (int i = 0; i < line.Count; ++i)
{
var cell = line[i];
bool createTriangle = false;
if (i == 0 || startNew)
{
// new start
triStartX = cell.X - 1;
startNew = false;
}
if (i == line.Count - 1)
{
// need to close segment here
createTriangle = true;
}
else
{
if (cell.X + 1 < line[i + 1].X)
{
// gap
createTriangle = true;
startNew = true;
}
}
if (createTriangle)
{
WorkingShape.Triangles.Add(new Triangle(new Vector2(triStartX, cell.Y - 1), new Vector2(triStartX, cell.Y), new Vector2(cell.X, cell.Y - 1)));
WorkingShape.Triangles.Add(new Triangle(new Vector2(triStartX, cell.Y), new Vector2(cell.X, cell.Y), new Vector2(cell.X, cell.Y - 1)));
}
}
}
}