static void PerformRenumberOnPart(RMGeneratorCollection collection, RMGenPart.eGender gender, RMGenPart.GenPartType partType, ref List <ComparedPath> comparedPaths, string rootPath, string _namespace) { int floorPositionValue = Precision.GetPositionFloorOfPart(gender, partType); RMGenPart nextLowestGenPart = collection.Parts.GetPartByInternalPosition(partType, gender, floorPositionValue); if (nextLowestGenPart == null) { nextLowestGenPart = collection.Parts.GetLowestPartByInternalPosition(partType, gender); if (nextLowestGenPart == null) { return; } nextLowestGenPart.implicitID = floorPositionValue; PerformRenumberOnPartsFile(nextLowestGenPart, ref comparedPaths, rootPath, _namespace); } RMGenPart prevLowestGenPart; while (true) { prevLowestGenPart = nextLowestGenPart; collection.Parts.Remove(nextLowestGenPart); nextLowestGenPart = collection.Parts.GetLowestPartByInternalPosition(partType, gender); if (nextLowestGenPart == null) { break; } if ((nextLowestGenPart.implicitID - prevLowestGenPart.implicitID) > 1) { if (Precision.ShouldSkipPosition(gender, partType, prevLowestGenPart.implicitID + 1)) { int nextPosition = Precision.GetNextIntPosition(gender, partType, prevLowestGenPart.implicitID); if (nextPosition == nextLowestGenPart.implicitID) { continue; } } nextLowestGenPart.implicitID = Precision.GetNextIntPosition(gender, partType, prevLowestGenPart.implicitID); PerformRenumberOnPartsFile(nextLowestGenPart, ref comparedPaths, rootPath, _namespace); } } }