Example #1
0
            public int CompareTo(Ordo target)
            {
                if (Category != target.Category)
                {
                    return(Category.CompareTo(target.Category));
                }
                //同カテゴリが残る

                //カテゴリ内で名前より方向を揃えることを優先するカテゴリであるか?
                if ((Category == BoneCategory.Other) || (Category == BoneCategory.Hair))
                {
                    if (StemName != target.StemName)
                    {
                        return(StemName.CompareTo(target.StemName));
                    }
                    //同名ボーンが残る

                    if (Direction != target.Direction)
                    {
                        return(Direction.CompareTo(target.Direction));
                    }
                    //同方向が残る
                }
                else
                {
                    if (Direction != target.Direction)
                    {
                        return(Direction.CompareTo(target.Direction));
                    }
                    //同方向が残る

                    if (NameOrder != target.NameOrder)
                    {
                        return(NameOrder.CompareTo(target.NameOrder));
                    }
                    //同名ボーンが残る
                }

                if (isParent)
                {
                    return(target.NumerusOrdinis.CompareTo(NumerusOrdinis));
                }
                //親ボーンでないものが残る

                else if ((NumerusOrdinis != 0) && (target.NumerusOrdinis != 0))
                {
                    return(NumerusOrdinis.CompareTo(target.NumerusOrdinis));
                }
                //添数字が無いものが残る

                return(StemName.CompareTo(target.StemName));
            }