public void RemoveAttributeInfo(int id)
{
// Shift all succeeding attributeInfos and change their id
//
for (int i = id - 1; i < attributeInfo.Length - 1; i++)
{
attributeInfo[i] = attributeInfo[i + 1];
attributeInfo[i].id--;
//attributeInfo[i].id = i + 1;
}
Array.Resize(ref attributeInfo, attributeInfo.Length - 1);
// Fix the NodeInfos
foreach (PssgNodeInfo nInfo in nodeInfo)
{
List<int> keys = new List<int>(nInfo.attributeInfo.Keys);
//keys.Sort();
if (nInfo.attributeInfo.ContainsKey(id) == true)
{
nInfo.attributeInfo.Remove(id);
for (int i = id + 1; nInfo.attributeInfo.ContainsKey(i); i++)
{
PssgAttributeInfo aInfo = attributeInfo[i - 2];
nInfo.attributeInfo.Remove(i);
nInfo.attributeInfo.Add(i - 1, aInfo);
}
}
else
{
for (int i = 0; i < keys.Count; i++)
{
if (keys[i] > id)
{
PssgAttributeInfo aInfo = attributeInfo[keys[i] - 2];
nInfo.attributeInfo.Remove(keys[i]);
nInfo.attributeInfo.Add(keys[i] - 1, aInfo);
}
}
}
}
// Edit CNode to fix CAttr.id
if (rootNode != null)
{
rootNode.RemoveAttributeInfo(id);
}
}