001/**
002 * Copyright (c) 2008-2014 Ardor Labs, Inc.
003 *
004 * This file is part of Ardor3D.
005 *
006 * Ardor3D is free software: you can redistribute it and/or modify it 
007 * under the terms of its license which may be found in the accompanying
008 * LICENSE file or at <http://www.ardor3d.com/LICENSE>.
009 */
010
011package com.ardor3d.renderer.queue;
012
013import java.util.Comparator;
014
015import com.ardor3d.renderer.Renderer;
016import com.ardor3d.scenegraph.Spatial;
017
018public class OrthoRenderBucket extends AbstractRenderBucket {
019
020    public OrthoRenderBucket() {
021        super();
022
023        _comparator = new OrthoComparator();
024    }
025
026    @Override
027    public void render(final Renderer renderer) {
028        if (_currentListSize > 0) {
029            try {
030                renderer.setOrtho();
031                for (int i = 0; i < _currentListSize; i++) {
032                    _currentList[i].draw(renderer);
033                }
034            } finally {
035                renderer.unsetOrtho();
036            }
037        }
038    }
039
040    private static class OrthoComparator implements Comparator<Spatial> {
041        @Override
042        public int compare(final Spatial o1, final Spatial o2) {
043            if (o2.getSceneHints().getOrthoOrder() == o1.getSceneHints().getOrthoOrder()) {
044                return 0;
045            } else if (o2.getSceneHints().getOrthoOrder() < o1.getSceneHints().getOrthoOrder()) {
046                return -1;
047            } else {
048                return 1;
049            }
050        }
051    }
052}