/**
   * collect all nodes
   *
   * @param branch
   */
  private void collectNodes(KNode branch) {
    Camera cam = engine.getCamera();

    Iterator<KNode> nodeIterator = branch.getLeafs().iterator();
    while (nodeIterator.hasNext()) {
      KNode n = nodeIterator.next();

      n.updateMatrix();

      if (n.isVisible()) {
        if (n instanceof VisualNode) {
          if (cam == null || (cam != null && cam.isVisible((VisualNode) n))) {
            visuals.add((VisualNode) n);
          }
        }

        collectNodes(n);
      }
    }
  }