public static MemoryElement GetTreeRoot(ObjectMemoryInfo[] memoryObjectList, int[] referencesIndices)
{
ObjectInfo[] array = new ObjectInfo[memoryObjectList.Length];
for (int i = 0; i < memoryObjectList.Length; i++)
{
array[i] = new ObjectInfo
{
instanceId = memoryObjectList[i].instanceId,
memorySize = memoryObjectList[i].memorySize,
reason = memoryObjectList[i].reason,
name = memoryObjectList[i].name,
className = memoryObjectList[i].className
};
}
int num = 0;
for (int j = 0; j < memoryObjectList.Length; j++)
{
for (int k = 0; k < memoryObjectList[j].count; k++)
{
int num2 = referencesIndices[k + num];
if (array[num2].referencedBy == null)
{
array[num2].referencedBy = new List <ObjectInfo>();
}
array[num2].referencedBy.Add(array[j]);
}
num += memoryObjectList[j].count;
}
MemoryElement memoryElement = new MemoryElement();
ObjectInfo[] arg_113_0 = array;
if (MemoryElementDataManager.< > f__mg$cache2 == null)
{
MemoryElementDataManager.< > f__mg$cache2 = new Comparison <ObjectInfo>(MemoryElementDataManager.SortByMemoryClassName);
}
Array.Sort <ObjectInfo>(arg_113_0, MemoryElementDataManager.< > f__mg$cache2);
memoryElement.AddChild(new MemoryElement("Scene Memory", MemoryElementDataManager.GenerateObjectTypeGroups(array, MemoryElementDataManager.ObjectTypeFilter.Scene)));
memoryElement.AddChild(new MemoryElement("Assets", MemoryElementDataManager.GenerateObjectTypeGroups(array, MemoryElementDataManager.ObjectTypeFilter.Asset)));
memoryElement.AddChild(new MemoryElement("Builtin Resources", MemoryElementDataManager.GenerateObjectTypeGroups(array, MemoryElementDataManager.ObjectTypeFilter.BuiltinResource)));
memoryElement.AddChild(new MemoryElement("Not Saved", MemoryElementDataManager.GenerateObjectTypeGroups(array, MemoryElementDataManager.ObjectTypeFilter.DontSave)));
memoryElement.AddChild(new MemoryElement("Other", MemoryElementDataManager.GenerateObjectTypeGroups(array, MemoryElementDataManager.ObjectTypeFilter.Other)));
List <MemoryElement> arg_1B4_0 = memoryElement.children;
if (MemoryElementDataManager.< > f__mg$cache3 == null)
{
MemoryElementDataManager.< > f__mg$cache3 = new Comparison <MemoryElement>(MemoryElementDataManager.SortByMemorySize);
}
arg_1B4_0.Sort(MemoryElementDataManager.< > f__mg$cache3);
return(memoryElement);
}