// 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); }
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); }
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); }
public void RemoveFromGroupList(SpriteLayerComponentData layerSortComp) { groupList.Remove(layerSortComp); }