public static MemoryElement GetTreeRoot(ObjectMemoryInfo[] memoryObjectList, int[] referencesIndices) { UnityEditor.ObjectInfo[] array = new UnityEditor.ObjectInfo[memoryObjectList.Length]; for (int i = 0; i < memoryObjectList.Length; i++) { array[i] = new UnityEditor.ObjectInfo { instanceId = memoryObjectList[i].instanceId, memorySize = memoryObjectList[i].memorySize, reason = memoryObjectList[i].reason, name = memoryObjectList[i].name, className = memoryObjectList[i].className }; } int num2 = 0; for (int j = 0; j < memoryObjectList.Length; j++) { for (int k = 0; k < memoryObjectList[j].count; k++) { int index = referencesIndices[k + num2]; if (array[index].referencedBy == null) { array[index].referencedBy = new List <UnityEditor.ObjectInfo>(); } array[index].referencedBy.Add(array[j]); } num2 += memoryObjectList[j].count; } MemoryElement element = new MemoryElement(); Array.Sort <UnityEditor.ObjectInfo>(array, new Comparison <UnityEditor.ObjectInfo>(MemoryElementDataManager.SortByMemoryClassName)); element.AddChild(new MemoryElement("Scene Memory", GenerateObjectTypeGroups(array, ObjectTypeFilter.Scene))); element.AddChild(new MemoryElement("Assets", GenerateObjectTypeGroups(array, ObjectTypeFilter.Asset))); element.AddChild(new MemoryElement("Builtin Resources", GenerateObjectTypeGroups(array, ObjectTypeFilter.BuiltinResource))); element.AddChild(new MemoryElement("Not Saved", GenerateObjectTypeGroups(array, ObjectTypeFilter.DontSave))); element.AddChild(new MemoryElement("Other", GenerateObjectTypeGroups(array, ObjectTypeFilter.Other))); element.children.Sort(new Comparison <MemoryElement>(MemoryElementDataManager.SortByMemorySize)); return(element); }
public static MemoryElement GetTreeRoot(ObjectMemoryInfo[] memoryObjectList, int[] referencesIndices) { UnityEditor.ObjectInfo[] array = new UnityEditor.ObjectInfo[memoryObjectList.Length]; for (int i = 0; i < memoryObjectList.Length; i++) { array[i] = new UnityEditor.ObjectInfo { instanceId = memoryObjectList[i].instanceId, memorySize = memoryObjectList[i].memorySize, reason = memoryObjectList[i].reason, name = memoryObjectList[i].name, className = memoryObjectList[i].className }; } int num2 = 0; for (int j = 0; j < memoryObjectList.Length; j++) { for (int k = 0; k < memoryObjectList[j].count; k++) { int index = referencesIndices[k + num2]; if (array[index].referencedBy == null) { array[index].referencedBy = new List<UnityEditor.ObjectInfo>(); } array[index].referencedBy.Add(array[j]); } num2 += memoryObjectList[j].count; } MemoryElement element = new MemoryElement(); Array.Sort<UnityEditor.ObjectInfo>(array, new Comparison<UnityEditor.ObjectInfo>(MemoryElementDataManager.SortByMemoryClassName)); element.AddChild(new MemoryElement("Scene Memory", GenerateObjectTypeGroups(array, ObjectTypeFilter.Scene))); element.AddChild(new MemoryElement("Assets", GenerateObjectTypeGroups(array, ObjectTypeFilter.Asset))); element.AddChild(new MemoryElement("Builtin Resources", GenerateObjectTypeGroups(array, ObjectTypeFilter.BuiltinResource))); element.AddChild(new MemoryElement("Not Saved", GenerateObjectTypeGroups(array, ObjectTypeFilter.DontSave))); element.AddChild(new MemoryElement("Other", GenerateObjectTypeGroups(array, ObjectTypeFilter.Other))); element.children.Sort(new Comparison<MemoryElement>(MemoryElementDataManager.SortByMemorySize)); return element; }
public MemoryElement(UnityEditor.ObjectInfo memInfo, bool finalize) { this.expanded = false; this.memoryInfo = memInfo; this.name = this.memoryInfo.name; this.totalMemory = (memInfo == null) ? 0 : memInfo.memorySize; this.totalChildCount = 1; if (finalize) { this.children = new List <MemoryElement>(); } }
private static ObjectTypeFilter GetObjectTypeFilter(UnityEditor.ObjectInfo info) { switch (info.reason) { case 1: return(ObjectTypeFilter.BuiltinResource); case 2: return(ObjectTypeFilter.DontSave); case 3: case 8: case 9: return(ObjectTypeFilter.Asset); case 10: return(ObjectTypeFilter.Other); } return(ObjectTypeFilter.Scene); }
private static int SortByMemoryClassName(UnityEditor.ObjectInfo x, UnityEditor.ObjectInfo y) { return(y.className.CompareTo(x.className)); }