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

#pragma once

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

namespace glm
{
	struct GenericPostureV2;

	struct GLM_SDK_API GenericAnimationV8
	{
		GLM_RTTI("57d83d4f-bfc9-4d6f-be26-7625bfd7e879", glm::GenericAnimationV8, addAttributes )

	public:

		GLM_CLASS_STAT_ID( glm::MemoryStatIds::Simulation)

		GenericAnimationV8();
		~GenericAnimationV8();

		void finish();

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

	public:

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

		glm::Array<GenericPostureV2> _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;
	};
}
