public void PackItem(int itemID, TItem item, TPos position) { Items[itemID] = item; Positions[itemID] = position; ExtremePoints.Remove(position); foreach (int id in Items.Select(x => x.Key)) { GenerateNewExtremePointsForNewItem(Items[id], Positions[id]); } AddNewItemToOccupationLayers(itemID, item, position); }
public override void PackItem(int itemID, PackingItem item, PackingPosition position) { // base call is deliberately omitted, because UpdateResidualSpace needs to be fitted in before Items[itemID] = item; Positions[itemID] = position; ExtremePoints.Remove(position); ResidualSpace.Remove(position); UpdateResidualSpace(item, position); foreach (int id in Items.Select(x => x.Key)) { GenerateNewExtremePointsForNewItem(Items[id], Positions[id]); } AddNewItemToOccupationLayers(itemID, item, position); }