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

#pragma once

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

namespace glm
{
	struct ChannelReplayParametersV0;
	struct ChannelInfo;
	struct EffectorMapping;

	typedef EffectorMapping BlendShapeMapping ;

	/**
	* \brief Configuration of replayed bones on a different skeleton
	*
	* \author dev@golaem.com
	*
	*/
	struct GLM_SDK_API AnimationReplayMappingV1
	{
		GLM_RTTI( "6fbd68a4-bf8c-4402-b5e4-a4081381549c", glm::AnimationReplayMappingV1, addRTTIAttributes )

	public:

		GLM_CLASS_STAT_ID( glm::MemoryStatIds::Simulation)

		//************************************************************
		//! @name Constructors and destructor
		//************************************************************
		//@{
		AnimationReplayMappingV1();
		~AnimationReplayMappingV1();

		void finish() ;
		//@}

		bool _replayRoot;
		bool _replaySpine;
		glm::Array<ChannelInfo> _channelsInfo;

		glm::PODArray<int> _blendShapeGroupMapping;
		glm::Array<BlendShapeMapping> _blendShapeMapping;

		glm::PODArray<int> _animationReplayChannels;
		glm::Array<EffectorMapping> _effectorMapping;
		glm::Array<ChannelReplayParametersV0> _channelReplayParameters;

	private:
		/**
		* \brief Register the inspectable attributes to the class RTTI
		*/
		static void addRTTIAttributes();
	} ;
}
