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);
}