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

#pragma once

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

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

	/**
	* \brief Configuration of replayed bones on a different skeleton
	*
	* \author dev@golaem.com
	*
	*/
	struct GLM_SDK_API AnimationReplayMappingV0
	{
		GLM_RTTI( "c0b608cd-401b-4f79-9b6f-2a693c30182d", glm::AnimationReplayMappingV0, addRTTIAttributes )

	public:

		GLM_CLASS_STAT_ID( glm::MemoryStatIds::Simulation)

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

		void finish() ;
		//@}

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

		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();
	} ;
}
