LayerDrawable*
TerrainRenderData::addLayerDrawable(const Layer* layer)
{
    LayerDrawable* drawable = new LayerDrawable();
    drawable->_drawOrder = _layerList.size();
    _layerList.push_back(drawable);

    drawable->_drawState = _drawState.get();

    if (layer)
    {
        _layerMap[layer->getUID()] = drawable;
        drawable->_layer = layer;
        drawable->_visibleLayer = dynamic_cast<const VisibleLayer*>(layer);
        drawable->_imageLayer = dynamic_cast<const ImageLayer*>(layer);
        drawable->setStateSet(layer->getStateSet());
        drawable->_renderType = layer->getRenderType();
    }
    else
    {
        _layerMap[-1] = drawable;
    }

    return drawable;
}
LayerDrawable*
TerrainRenderData::addLayerDrawable(const Layer* layer)
{
    UID uid = layer ? layer->getUID() : -1;
    LayerDrawable* ld = new LayerDrawable();
    _layerList.push_back(ld);
    _layerMap[uid] = ld;
    ld->_layer = layer;
    ld->_imageLayer = dynamic_cast<const ImageLayer*>(layer);
    ld->_order = _layerList.size() - 1;
    ld->_drawState = _drawState.get();
    if (layer)
    {
        ld->setStateSet(layer->getStateSet());
        ld->_renderType = layer->getRenderType();
    }

    return ld;
}