예제 #1
0
  /**
   * Render the map
   *
   * @param world
   * @param renderBuffer
   * @param renderer
   * @param selection
   */
  public void render(
      World world,
      RenderBuffer renderBuffer,
      Chunk.Renderer renderer,
      ChunkSelectionTracker selection) {

    int width = renderBuffer.getWidth();
    int height = renderBuffer.getHeight();

    Graphics g = renderBuffer.getGraphics();
    if (world.isEmptyWorld()) {
      renderEmpty(g, width, height);
      return;
    }

    ChunkView view = renderBuffer.getView();

    ChunkIterator iter = renderBuffer.getChunkIterator();
    while (iter.hasNext()) {
      ChunkPosition pos = iter.next();
      int x = pos.x;
      int z = pos.z;
      if (!view.isChunkVisible(x, z)) continue;

      Chunk chunk = world.getChunk(pos);

      renderer.render(chunk, renderBuffer, x, z);
      if (highlightEnabled) chunk.renderHighlight(renderBuffer, x, z, hlBlock, hlColor);
      if (selection.isSelected(pos)) {
        renderBuffer.fillRectAlpha(
            view.chunkScale * (x - view.ix0),
            view.chunkScale * (z - view.iz0),
            view.chunkScale,
            view.chunkScale,
            Layer.selectionColor);
      }
    }
  }