#ifndef OPENMW_COMPONENTS_RESOURCE_ANIMATION_HPP
#define OPENMW_COMPONENTS_RESOURCE_ANIMATION_HPP

#include <vector>

#include <osg/Node>
#include <osg/Object>
#include <osgAnimation/Channel>

namespace Resource
{
    /// Stripped down class of osgAnimation::Animation, only needed for OSG's plugin formats like dae
    class Animation : public osg::Object
    {
    public:
        META_Object(Resource, Animation)

        Animation()
            : mDuration(0.0)
            , mStartTime(0)
        {
        }

        Animation(const Animation&, const osg::CopyOp&);
        ~Animation() {}

        void addChannel(osg::ref_ptr<osgAnimation::Channel> pChannel);

        std::vector<osg::ref_ptr<osgAnimation::Channel>>& getChannels();

        const std::vector<osg::ref_ptr<osgAnimation::Channel>>& getChannels() const;

        bool update(double time);

    protected:
        double mDuration;
        double mStartTime;
        std::vector<osg::ref_ptr<osgAnimation::Channel>> mChannels;
    };
}

#endif
