private void UpdateNetworkEdges()
{
var edges = mEdges.Where(CheckVisibility).ToList();
int oldLength = mLines.Count;
int newLength = edges.Count;
// Free any unused lines
for (int i = newLength; i < oldLength; i++)
{
Destroy(mLines[i]);
mLines[i] = null;
}
mLines.RemoveRange(Math.Min(oldLength, newLength), Math.Max(oldLength - newLength, 0));
mLines.AddRange(Enumerable.Repeat<NetworkLine>(null, Math.Max(newLength - oldLength, 0)));
// Iterate over all satellites, updating or creating new lines.
var it = edges.GetEnumerator();
for (int i = 0; i < newLength; i++)
{
it.MoveNext();
mLines[i] = mLines[i] ?? NetworkLine.Instantiate();
mLines[i].Material = MapView.fetch.orbitLinesMaterial;
mLines[i].LineWidth = 3.0f;
mLines[i].Edge = it.Current;
mLines[i].Color = CheckColor(it.Current);
mLines[i].Active = true;
}
}