collisionFreeOrdered method
void
collisionFreeOrdered()
Transforms a list of MapElements, orders it and removes those elements that overlap. This operation is useful for an early elimination of elements in a list that will never be drawn because they overlap. Overlapping items will be disposed.
@param input list of MapElements @return collision-free, ordered list, a subset of the input.
Implementation
void collisionFreeOrdered() {
// sort items by priority (highest first)
// renderInfos.sort((a, b) => b.renderInstruction.priority.compareTo(a.renderInstruction.priority));
// in order of priority, see if an item can be drawn, i.e. none of the items
// in the currentItemsToDraw list clashes with it.
List<RenderInfo> output = [];
for (RenderInfo item in renderInfos) {
if (haveSpace(item, output)) {
output.add(item);
} else {
//item.dispose();
}
}
renderInfos.clear();
renderInfos.addAll(output);
}