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

#pragma once

#include "glmSDKAPI.h"
#include "glmMotionDefinitions.h"
#include "glmGenericPostureV4.h"
#include "glmLimbConfiguration.h"
#include <glmRTTI.h>

namespace glm
{
	struct BlendShapeGroupV0;

	struct GLM_SDK_API GenericAnimationV10
	{
		GLM_RTTI("59bbdb1b-ebc1-47b8-a9bc-c44d1fe7f10f", glm::GenericAnimationV10, addAttributes)

	public:

		GenericAnimationV10();
		~GenericAnimationV10();

		void finish();

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

	public:

		//************************************************************
		// Data
		//************************************************************
		//@{
		Time _animationDeltaTime;

		glm::Array<GenericPostureV4> _posturesArray;
		glm::Array<LimbConfiguration> _limbsConfigurationsArray;
		//@}

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

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

		glm::Array<BlendShapeGroupV0> _blendShapeGroups;

		bool _initPostLoad;
	};
}
