public void draw(Renderer renderer) {
        // If there is no model, return
        if(model == null) return;
        
        // Create a new model matrix
        Matrix matrix = new Matrix();

        // Translate
        if(position != null && !position.isNull())
            matrix.translate(position.x, position.y, position.z);

        // Rotate
        if(rotation != null && !rotation.isNull()) {
            matrix.rotate(rotation.x, 1, 0, 0);
            matrix.rotate(rotation.y, 0, 1, 0);
            matrix.rotate(rotation.z, 0, 0, 1);
        }
        
        // Scale
        if(scale != null)
            matrix.scale(scale.x, scale.y, scale.z);
        
        // Update modelview matrix
        renderer.glUpdateModelMatrix(matrix);
        
        // Discard if outside frustum
        if (culling && renderer.frustum.isOutside(aabb, -1.2f))
            return;
        
        // Draw model
        model.draw();
    }