FRenderer.CreateFacetRenderLayer C# (CSharp) Method

CreateFacetRenderLayer() protected method

protected CreateFacetRenderLayer ( FFacetType, facetType, int batchIndex, FAtlas, atlas, FShader, shader ) : FFacetRenderLayer,
facetType FFacetType,
batchIndex int
atlas FAtlas,
shader FShader,
return FFacetRenderLayer,
    protected FFacetRenderLayer CreateFacetRenderLayer(FFacetType facetType, int batchIndex, FAtlas atlas, FShader shader)
    {
        //first, check and see if we already have a layer that matches the batchIndex
        int previousLiveLayerCount = _previousLiveLayers.Count;
        for(int p = 0; p<previousLiveLayerCount; ++p)
        {
            FFacetRenderLayer previousLiveLayer = _previousLiveLayers[p];
            if(previousLiveLayer.batchIndex == batchIndex)
            {
                _previousLiveLayers.RemoveAt(p);
                _liveLayers.Add (previousLiveLayer);
                _allRenderables.Add(previousLiveLayer);
                return previousLiveLayer;
            }
        }

        //now see if we have a cached (old, now unused layer) that matches the batchIndex
        int cachedLayerCount = _cachedLayers.Count;
        for(int c = 0; c<cachedLayerCount; ++c)
        {
            FFacetRenderLayer cachedLayer = _cachedLayers[c];
            if(cachedLayer.batchIndex == batchIndex)
            {
                _cachedLayers.RemoveAt(c);
                cachedLayer.AddToWorld();
                _liveLayers.Add (cachedLayer);
                _allRenderables.Add(cachedLayer);
                return cachedLayer;
            }
        }

        //still no layer found? create a new one!

        FFacetRenderLayer newLayer = facetType.createRenderLayer(_stage, facetType,atlas,shader);
        _liveLayers.Add(newLayer);
        _allLayers.Add(newLayer);
        _allRenderables.Add(newLayer);
        newLayer.AddToWorld();

        return newLayer;
    }