Skip to content

Commit

Permalink
[feat][editor]:分析器对象池信息窗口增加列排序处理
Browse files Browse the repository at this point in the history
  • Loading branch information
CatImmortal committed Mar 1, 2023
1 parent 61ca677 commit ff4eacd
Showing 1 changed file with 70 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using CatAsset.Runtime;
using UnityEditor;
using UnityEditor.IMGUI.Controls;
Expand Down Expand Up @@ -40,6 +42,74 @@ public override bool CanShow()
return TreeViewData != null && TreeViewData.PoolInfoList.Count > 0;
}

protected override void OnSortingChanged(MultiColumnHeader header)
{
if (header.sortedColumnIndex == -1)
{
return;
}

bool ascending = header.IsSortedAscending(header.sortedColumnIndex);

ColumnType column = (ColumnType)header.sortedColumnIndex;

IOrderedEnumerable<ProfilerPoolInfo> poolOrdered = null;

switch (column)
{
case ColumnType.Name:
poolOrdered = TreeViewData.PoolInfoList.Order(info => info.Name, ascending);
break;

case ColumnType.PoolExpireTime:
poolOrdered = TreeViewData.PoolInfoList.Order(info => info.PoolExpireTime, ascending);
break;

case ColumnType.ObjExpireTime:
poolOrdered = TreeViewData.PoolInfoList.Order(info => info.ObjExpireTime, ascending);
break;

case ColumnType.UnusedTimer:
foreach (var poolInfo in TreeViewData.PoolInfoList)
{
var objOrdered = poolInfo.PoolObjectList.Order((info) => info.UnusedTimer , ascending);
poolInfo.PoolObjectList = new List<ProfilerPoolInfo.PoolObjectInfo>(objOrdered);
}
poolOrdered = TreeViewData.PoolInfoList.Order(info => info.UnusedTimer, ascending);
break;

case ColumnType.AllCount:
poolOrdered = TreeViewData.PoolInfoList.Order(info => info.AllCount, ascending);
break;

case ColumnType.UsedCount:
poolOrdered = TreeViewData.PoolInfoList.Order(info => info.UnusedCount, ascending);
break;

case ColumnType.UnusedCount:
poolOrdered = TreeViewData.PoolInfoList.Order(info => info.UnusedCount, ascending);
break;

case ColumnType.IsLock:
foreach (var poolInfo in TreeViewData.PoolInfoList)
{
var objOrdered = poolInfo.PoolObjectList.Order((info) => info.IsLock , ascending);
poolInfo.PoolObjectList = new List<ProfilerPoolInfo.PoolObjectInfo>(objOrdered);
}
Reload();
break;

default:
throw new ArgumentOutOfRangeException();
}

if (poolOrdered != null)
{
TreeViewData.PoolInfoList = new List<ProfilerPoolInfo>(poolOrdered);
Reload();
}
}

protected override TreeViewItem BuildRoot()
{
var root = new TreeViewDataItem<ProfilerPoolInfo>()
Expand Down

0 comments on commit ff4eacd

Please sign in to comment.