/* osgEarth - Geospatial SDK for OpenSceneGraph
* Copyright 2008-2012 Pelican Mapping
* MIT License
*/
#ifndef OSGEARTH_CESIUM_CREDITSNODE_H
#define OSGEARTH_CESIUM_CREDITSNODE_H

#include "Export"
#include <osg/Group>
#include <osg/View>
#include <osg/Texture2D>
#include <CesiumUtility/CreditSystem.h>
#include <memory>

namespace osgEarth {
    namespace Cesium
    {
        using namespace osgEarth;

        class OSGEARTHCESIUM_EXPORT CesiumCreditsNode : public osg::Group
        {
        public:
            CesiumCreditsNode(osg::View* view, CesiumUtility::CreditSystem* creditSystem);
            virtual void traverse(osg::NodeVisitor& nv);
            

        private:

            void nextFrame();
            void updateCredits();

            osg::Texture2D* getOrCreateTexture(const std::string& url);
            std::map< std::string, osg::ref_ptr< osg::Texture2D > > _textureCache;


            std::vector< std::string > _credits;
            osg::Camera* _camera;
            osg::observer_ptr< osg::View > _view;
            std::shared_ptr< CesiumUtility::CreditSystem > _creditSystem;
        };
    }
}


#endif // OSGEARTH_CESIUM_CREDITSNODE_H
