@Override
	public void render() {
		if (this.flipVertical) {
			GL11.glScaled(1, -1, 1);
		}
		
		if (this.shadow) {
			double dx = this.halfWidth * getScale() * 0.02;
			double dy = this.halfWidth * getScale() * 0.02;
			GL11.glColor4d(getColor().getRed() * 0.1, getColor().getGreen() * 0.1, getColor().getBlue() * 0.1, 0.7);
			
		    GL11.glBegin(GL11.GL_QUADS);
		    GL11.glTexCoord2f(0.0f, this.texture.getHeight());
		    GL11.glVertex2d(-this.halfWidth * getScale() + dx, -this.halfHeight * getScale() - dy);
		    
		    GL11.glTexCoord2f(this.texture.getWidth(), this.texture.getHeight());
	        GL11.glVertex2d(this.halfWidth * getScale() + dx, -this.halfHeight * getScale() - dy);
	        
		    GL11.glTexCoord2f(this.texture.getWidth(), 0);
	        GL11.glVertex2d(this.halfWidth * getScale() + dx, this.halfHeight * getScale() - dy);
	        
		    GL11.glTexCoord2f(0.0f, 0.0f);
			GL11.glVertex2d(-this.halfWidth * getScale() + dx, this.halfHeight * getScale() - dy);			
		}
		
		getColor().apply();
		
	    GL11.glBegin(GL11.GL_QUADS);
	    GL11.glTexCoord2f(0.0f, this.texture.getHeight());
	    GL11.glVertex2d(-this.halfWidth * getScale(), -this.halfHeight * getScale());
	    
	    GL11.glTexCoord2f(this.texture.getWidth(), this.texture.getHeight());
        GL11.glVertex2d(this.halfWidth * getScale(), -this.halfHeight * getScale());
        
	    GL11.glTexCoord2f(this.texture.getWidth(), 0);
        GL11.glVertex2d(this.halfWidth * getScale(), this.halfHeight * getScale());
        
	    GL11.glTexCoord2f(0.0f, 0.0f);
		GL11.glVertex2d(-this.halfWidth * getScale(), this.halfHeight * getScale());
		
		if (this.mirror) {
			GL11.glColor4d(getColor().getRed() * 0.7, getColor().getGreen() * 0.7, getColor().getBlue() * 0.7, 0.7);
			
		    GL11.glTexCoord2f(0.0f, this.texture.getHeight());
		    GL11.glVertex2d(-this.halfWidth * getScale(), -this.halfHeight * getScale());
		    
		    GL11.glTexCoord2f(this.texture.getWidth(), this.texture.getHeight());
	        GL11.glVertex2d(this.halfWidth * getScale(), -this.halfHeight * getScale());
	        
			GL11.glColor4d(getColor().getRed(), getColor().getGreen(), getColor().getBlue(), 0);
		    GL11.glTexCoord2f(this.texture.getWidth(), this.texture.getHeight() / 2);
	        GL11.glVertex2d(this.halfWidth * getScale(), -this.halfHeight * 2 * getScale());
	        
		    GL11.glTexCoord2f(0.0f, this.texture.getHeight() / 2);
			GL11.glVertex2d(-this.halfWidth * getScale(), -this.halfHeight * 2* getScale());
		}
		
	    GL11.glEnd();
	}