/* osgEarth
 * Copyright 2025 Pelican Mapping
 * MIT License
 */
#ifndef OSGEARTH_SILVERLINING_CALLBACK_H
#define OSGEARTH_SILVERLINING_CALLBACK_H 1

#include "Common"
#include "SilverLiningAPIWrapper"

namespace osgEarth { namespace SilverLining
{
    /**
     * A callback that lets you execute code at initialization
     */
    class OSGEARTHSILVERLINING_EXPORT Callback : public osg::Referenced
    {
    public:
        virtual void onInitialize(Atmosphere& atmosphere) { }

        virtual void onDrawSky(Atmosphere& atmosphere) { }

        virtual void onDrawClouds(Atmosphere& atmosphere) { }

        /**
         * Returns elapsed milliseconds from epoch for clouds animation.
         * Use a return value of 0 to use an automatic real-time synchronization.
         */
        virtual unsigned long getMilliseconds() const { return 0; }
    };

} } // namespace osgEarth::SilverLining

#endif // OSGEARTH_SILVERLINING_CALLBACK_H
