예제 #1
0
    // TODO: Add a top level SortingGroupComponentRef somewhere to hold the top layer list
    // and continue on from there.

    public void AddToGroupList(SpriteLayerComponentData layerSortComp)
    {
        for (int i = 0; i < groupList.Count; i++)
        {
            if (layerSortComp.DrawLayerCurr > groupList[i].DrawLayerCurr)
            {
                groupList.Insert(i, layerSortComp);
                return;
            }
            else if (layerSortComp.DrawLayerCurr == groupList[i].DrawLayerCurr)
            {
                if (layerSortComp.OrderInLayer > groupList[i].OrderInLayer)
                {
                    groupList.Insert(i, layerSortComp);
                    return;
                }
                else if (layerSortComp.OrderInLayer == groupList[i].OrderInLayer)
                {
                    // Rerun the function from the front again until the increased order number's equal isn't found
                    layerSortComp.OrderInLayer++;
                    AddToGroupList(layerSortComp);
                    return;
                }
            }
        }
        // Will only happen if it's the furthest item in the list
        groupList.Add(layerSortComp);
    }
예제 #2
0
    public bool IsCloserThan(SpriteLayerComponentData layerComp)
    {
        List <SpriteLayerComponentData> sortLineageListA = GetLineageList();
        List <SpriteLayerComponentData> sortLineageListB = layerComp.GetLineageList();

        int incrementsToCheck = Utility.LesserOf(sortLineageListA.Count, sortLineageListB.Count);

        // Starting at 1 because all parent chains start with DrawLayerMngr.topSortGroup, which there's no point in comparing to itself
        for (int i = 1; i < incrementsToCheck; i++)
        {
            QtyCompare compValue = ARelativeToB(sortLineageListA[i], sortLineageListB[i]);
            if (compValue == QtyCompare.GREATER)
            {
                return(true);
            }
            else if (compValue == QtyCompare.LESSER)
            {
                return(false);
            }
        }

        return(false);
    }
예제 #3
0
    private QtyCompare ARelativeToB(SpriteLayerComponentData layerCompA, SpriteLayerComponentData layerCompB)
    {
        if (layerCompA.DrawLayerCurr > layerCompB.DrawLayerCurr)
        {
            return(QtyCompare.GREATER);
        }
        else if (layerCompA.DrawLayerCurr < layerCompB.DrawLayerCurr)
        {
            return(QtyCompare.LESSER);
        }
        else
        {
            if (layerCompA.OrderInLayer > layerCompB.OrderInLayer)
            {
                return(QtyCompare.GREATER);
            }
            else if (layerCompA.OrderInLayer < layerCompB.OrderInLayer)
            {
                return(QtyCompare.LESSER);
            }
        }

        return(QtyCompare.EQUAL);
    }
예제 #4
0
 public void RemoveFromGroupList(SpriteLayerComponentData layerSortComp)
 {
     groupList.Remove(layerSortComp);
 }