public void GenerateNewIds(ref List<Node> nodesList, ref List<Link> linksList)
{
foreach (var node in nodesList)
{
//generate id`s for inputs
foreach (var input in node.Inputs)
{
string oldId = input.Id;
input.Id = Guid.NewGuid().ToString();
//update links
foreach (var link in linksList.Where(x => x.InputId == oldId))
link.InputId = input.Id;
//for panel update input node id
if (node is PanelNode)
nodesList.FirstOrDefault(x => x.Id == oldId).Id = input.Id;
}
//generate id`s for outputs
foreach (var output in node.Outputs)
{
string oldId = output.Id;
output.Id = Guid.NewGuid().ToString();
//update links
foreach (var link in linksList.Where(x => x.OutputId == oldId))
link.OutputId = output.Id;
//for panel update output node id
if (node is PanelNode)
nodesList.FirstOrDefault(x => x.Id == oldId).Id = output.Id;
}
if (node is PanelNode)
{
string oldId = node.Id;
node.Id = Guid.NewGuid().ToString();
foreach (var n in nodesList.Where(x => x.PanelId == oldId))
n.PanelId = node.Id;
}
else if (node is PanelInputNode || node is PanelOutputNode)
{
//id already updated
}
else
{
node.Id = Guid.NewGuid().ToString();
}
}
}