clear method

void clear()

Clears the QuadTree and resets all properties.

Implementation

void clear() {
  // Break the references between nodes and quadrants and clear the nodes
  final queue = Queue<QuadTree$Node?>()..add(_root);
  while (queue.isNotEmpty) {
    final node = queue.removeFirst();
    if (node == null) continue;
    if (node.subdivided) {
      queue
        ..add(node._northWest)
        ..add(node._northEast)
        ..add(node._southWest)
        ..add(node._southEast);
    }
    node
      .._dirty = false
      .._length = 0
      .._subdivided = false
      .._northWest = null
      .._northEast = null
      .._southWest = null
      .._southEast = null
      .._ids.clear();
  }
  _root = null;

  // Clear nodes
  _nodesCount = 0;
  _recycledNodesCount = 0;
  _nodes = List<QuadTree$Node?>.filled(_reserved, null, growable: false);
  _recycledNodes = Uint32List(_reserved);

  // Clear objects
  _length = 0;
  _nextObjectId = 0;
  _recycledIdsCount = 0;
  _objects = Float32List(_reserved * _objectSize);
  _recycledIds = Uint32List(_reserved);
  _id2node = Uint32List(_reserved);
}