private void DoHeapshotObjects(List<HeapshotUIObject> objects, SplitterState splitter, int indent, OnSelect onSelect)
{
if (objects != null)
{
Event current = Event.current;
foreach (HeapshotUIObject obj2 in objects)
{
Rect position = new Rect(14f * indent, this.guiRect.y, 14f, this.guiRect.height);
Rect[] rectArray = new Rect[this.titleNames.Length];
float x = 14f * (indent + 1);
for (int i = 0; i < rectArray.Length; i++)
{
float width = (i != 0) ? ((float) splitter.realSizes[i]) : (splitter.realSizes[i] - x);
rectArray[i] = new Rect(x, this.guiRect.y, width, this.guiRect.height);
x += width;
}
if (current.type == EventType.Repaint)
{
Rect rect2 = new Rect(0f, 16f * this.itemIndex, base.position.width, 16f);
(((this.itemIndex & 1) != 0) ? Styles.entryOdd : Styles.entryEven).Draw(rect2, GUIContent.none, false, false, this.itemIndex == this.selectedItem, false);
}
if (obj2.HasChildren)
{
GUI.changed = false;
bool flag = GUI.Toggle(position, obj2.IsExpanded, GUIContent.none, Styles.foldout);
if (GUI.changed)
{
if (flag)
{
obj2.Expand();
}
else
{
obj2.Collapse();
}
}
}
GUI.changed = false;
bool flag2 = GUI.Toggle(rectArray[0], this.itemIndex == this.selectedItem, obj2.Name, Styles.numberLabel);
if (!obj2.IsDummyObject)
{
GUI.Toggle(rectArray[1], this.itemIndex == this.selectedItem, obj2.TypeName, Styles.numberLabel);
GUI.Toggle(rectArray[2], this.itemIndex == this.selectedItem, "0x" + obj2.Code.ToString("X"), Styles.numberLabel);
GUI.Toggle(rectArray[3], this.itemIndex == this.selectedItem, obj2.Size.ToString(), Styles.numberLabel);
GUI.Toggle(rectArray[4], this.itemIndex == this.selectedItem, string.Format("{0} / {1}", obj2.ReferenceCount, obj2.InverseReferenceCount), Styles.numberLabel);
if ((GUI.changed && flag2) && (onSelect != null))
{
this.selectedItem = this.itemIndex;
onSelect(obj2);
}
}
this.itemIndex++;
this.guiRect.y += 16f;
this.DoHeapshotObjects(obj2.Children, splitter, indent + 1, onSelect);
}
}
}