void execute( const FutureMap& input,
                  PromiseMap& output ) const
    {
        RenderingSetGenerator renderSetGenerator( _cache );

        ConstCacheObjects cacheObjects;
        size_t nVisible = 0;
        size_t nAvailable = 0;
        size_t nNotAvailable = 0;
        for( const auto& visibles: input.get< NodeIds >( "VisibleNodes" ))
        {
            size_t available = 0;
            size_t notAvailable = 0;
            const ConstCacheObjects& objs = renderSetGenerator.generateRenderingSet( visibles,
                                                                                     available,
                                                                                     notAvailable );
            cacheObjects.insert( cacheObjects.end(), objs.begin(), objs.end( ));
            nVisible += visibles.size();
            nAvailable += available;
            nNotAvailable += notAvailable;
        }

        output.set( "CacheObjects", cacheObjects );
        output.set( "RenderingDone", cacheObjects.size() == nVisible );
        output.set( "AvailableCount", nAvailable );
        output.set( "NotAvailableCount", nNotAvailable );
    }
Example #2
0
    void generateRenderBricks( const ConstCacheObjects& renderNodes,
                               RenderBricks& renderBricks )
    {
        renderBricks.reserve( renderNodes.size( ));
        BOOST_FOREACH( const ConstCacheObjectPtr& cacheObject, renderNodes )
        {
            const ConstTextureObjectPtr texture =
                boost::static_pointer_cast< const TextureObject >( cacheObject );

            RenderBrickPtr renderBrick( new RenderBrick( texture->getLODNode(),
                                                         texture->getTextureState( )));
            renderBricks.push_back( renderBrick );
        }
    }