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

#pragma once

#include "glmSDKAPI.h"
#include "glmRTTI.h"
#include <glmGolaemCharacterDeclarations.h> // GolaemCharacter declarations
#include "glmGenericPostureV1.h"
#include "glmLimbConfiguration.h"

namespace glm
{
	struct GenericPostureV1;
	struct ChannelInfo;

	struct GLM_SDK_API GenericAnimationV7
	{
		GLM_RTTI("8e4b3aba-9fa3-45c1-9005-9264cedce854", glm::GenericAnimationV7, addAttributes )

	public:

		GLM_CLASS_STAT_ID( glm::MemoryStatIds::Simulation)

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

		glm::Array<GenericPostureV1> _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;
		//@}

		GenericAnimationV7();
		~GenericAnimationV7();

		void finish();

	private:

		static void addAttributes() ;
	};
}
