public static BuildReportTool.SizePart[][] SegregateAssetSizesPerCategory(BuildReportTool.SizePart[] assetSizesAll, FileFilterGroup filters)
{
if (assetSizesAll == null || assetSizesAll.Length == 0) return null;
// we do filters.Count+1 for Unrecognized category
List< List<BuildReportTool.SizePart> > ret = new List< List<BuildReportTool.SizePart> >(filters.Count+1);
for (int n = 0, len = filters.Count+1; n < len; ++n)
{
ret.Add(new List<BuildReportTool.SizePart>());
}
bool foundAtLeastOneMatch = false;
for (int idxAll = 0, lenAll = assetSizesAll.Length; idxAll < lenAll; ++idxAll)
{
BRT_BuildReportWindow.GetValueMessage = "Segregating assets " + (idxAll+1) + " of " + assetSizesAll.Length + "...";
foundAtLeastOneMatch = false;
for (int n = 0, len = filters.Count; n < len; ++n)
{
if (filters[n].IsFileInFilter(assetSizesAll[idxAll].Name))
{
foundAtLeastOneMatch = true;
ret[n].Add(assetSizesAll[idxAll]);
}
}
if (!foundAtLeastOneMatch)
{
ret[ret.Count-1].Add(assetSizesAll[idxAll]);
}
}
BRT_BuildReportWindow.GetValueMessage = "";
BuildReportTool.SizePart[][] retArr = new BuildReportTool.SizePart[filters.Count+1][];
for (int n = 0, len = filters.Count+1; n < len; ++n)
{
retArr[n] = ret[n].ToArray();
}
return retArr;
}