public void SortElements()
{
//
SortBy mySortBy = sortBy;
SortOrder mySortOrder = sortOrder;
if ( sortBy == SortBy.UseBest ) {
switch ( algorithm ) {
case Algorithm.Basic:
mySortBy = SortBy.Height;
break;
case Algorithm.Tree:
mySortBy = SortBy.Height;
break;
default:
mySortBy = SortBy.Height;
break;
}
}
if ( sortOrder == SortOrder.UseBest ) {
mySortOrder = SortOrder.Descending;
}
// sort by
switch ( mySortBy ) {
case SortBy.Width:
if ( allowRotate )
elements.Sort( CompareByWidthRotate );
else
elements.Sort( CompareByWidth );
break;
case SortBy.Height:
if ( allowRotate )
elements.Sort( CompareByHeightRotate );
else
elements.Sort( CompareByHeight );
break;
case SortBy.Area:
elements.Sort( CompareByArea );
break;
case SortBy.Name:
elements.Sort( CompareByName );
break;
}
// sort order
if ( mySortOrder == SortOrder.Descending ) {
elements.Reverse();
}
needRebuild = true;
EditorUtility.SetDirty(this);
}