2 * Sixth 3D engine. Author: Svjatoslav Agejenko.
3 * This project is released under Creative Commons Zero (CC0) license.
8 package eu.svjatoslav.sixth.e3d.renderer.raster;
10 import eu.svjatoslav.sixth.e3d.gui.RenderingContext;
11 import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.AbstractCoordinateShape;
13 import java.io.Serializable;
14 import java.util.ArrayList;
15 import java.util.Comparator;
17 public class RenderAggregator {
19 private ArrayList<AbstractCoordinateShape> shapes = new ArrayList<>();
20 private ShapesZIndexComparator comparator = new ShapesZIndexComparator();
22 public void paint(final RenderingContext renderBuffer) {
23 shapes.sort(comparator);
24 shapes.forEach(shape -> shape.paint(renderBuffer));
27 public void queueShapeForRendering(final AbstractCoordinateShape shape) {
35 static class ShapesZIndexComparator implements Comparator<AbstractCoordinateShape>, Serializable {
38 public int compare(final AbstractCoordinateShape o1, final AbstractCoordinateShape o2) {
39 if (o1.getZ() < o2.getZ())
41 else if (o1.getZ() > o2.getZ())
44 return Integer.compare(o1.shapeId, o2.shapeId);