@Override
    public void draw(GL2 gl, int mode) {
        beforeDraw(gl);
        PolygonObject j;

        for (Map.Entry i : models.entrySet()) {
            j = (PolygonObject) i.getValue();

            // vererbe Kameradistanz an Unterobjekte
            j.setCamDistance(camDistance);

            // Fuelle Namestack wenn im GL_SELECT Modus
            if (mode == GL2.GL_SELECT) {
                if (j instanceof PolygonGroup) {
                    // Wenn Polygongruppe ist, rufe das Zeichnen rekursiv in Untergruppen auf
                    j.draw(gl, mode);
                } else {
                    // Fuelle Namestack
                    gl.glPushName((Integer) i.getKey());
                    j.draw(gl);
                    gl.glPopName();
                }
            } else {

                // Zeichne einfach und veerbe die Viewrotation weiter
                j.setCurrentViewRotation(super.getCurrentViewRotation());
                j.draw(gl);
            }
        }

        afterDraw(gl);
    }