/***************************************************************************
*                                                                          *
*  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 BlendShapeGroupV0;
	struct GenericPostureV3;

	struct GLM_SDK_API GenericAnimationV9
	{
		GLM_RTTI("c8c922fa-d8a9-44cb-9809-fce3b7489d28", glm::GenericAnimationV9, addAttributes )

	public:

		GenericAnimationV9();
		~GenericAnimationV9();

		void finish();

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

	public:

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

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