/***************************************************************************
*                                                                          *
*  Copyright (C) Golaem S.A.  All Rights Reserved.                         *
*                                                                          *
***************************************************************************/

#pragma once

#include "glmSDKAPI.h"
#include "glmAnimationInterface.h"
#include "glmMotionDefinitions.h"
#include <glmGolaemMotionDeclarations.h> // GolaemMotion declarations
#include "glmBlindDataV0.h"

namespace glm
{
    struct GLM_SDK_API GenericAnimationV11
    {
        GLM_RTTI("2d0b3905-53a7-445c-a709-062a966e0271", glm::GenericAnimationV11, addAttributes)

    public: //methods
        GLM_CLASS_STAT_ID( glm::MemoryStatIds::GolaemShared)


        GenericAnimationV11();
        ~GenericAnimationV11();

        /**
		* \brief Finish the GeneralizedAnimation (remove all postures and channels)
		*/
        void finish();

    protected:  //methods
        /**
		* \brief register the inspectable attributes to the class RTTI
		*/
        static void addAttributes();

    public: //data

            //************************************************************
        // Data
        //************************************************************
        //@{
        Time _animationDeltaTime;
        glm::Array<GenericPostureV5> _posturesArray;
        glm::Array<LimbConfigurationV0> _limbsConfigurationsArray;
        //@}

        //************************************************************
        //! @name Channels
        //************************************************************
        //@{
        int _channelCount;
        ChannelInfo* _channelsInfo;
        //@}

        glm::Array<glm::GlmString> _spineBoneNames;
        glm::Array<glm::GlmString> _limbBoneNames;
        glm::Array<glm::GlmString> _effectorBoneNames;

        glm::Array<BlindDataV0> _blindDataInfo;

        bool _initPostLoad;
    };

} // namespace glm
