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

#pragma once

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

namespace glm
{
	
	//-------------------------------------------------------------------------
	// ChannelReplayParametersV0
	//-------------------------------------------------------------------------
	struct GLM_SDK_API ChannelReplayParametersV0
	{
		GLM_RTTI( "2de4724d-69d1-4500-adb7-374428fd6db2", glm::ChannelReplayParametersV0, addAttributes )

	public:

		GLM_CLASS_STAT_ID( glm::MemoryStatIds::Simulation)

		ChannelReplayParametersV0() : _limbAuxiliaryReplayMode(AnimationReplayMode::REST_RELATIVE)
			,_limbExtensionReplayMode(AnimationReplayMode::ABSOLUTE_MODE)
			,_effectorAuxiliaryReplayMode(AnimationReplayMode::REST_RELATIVE)
			,_effectorExtensionReplayMode(AnimationReplayMode::ABSOLUTE_MODE)
		{ }

		AnimationReplayMode::Value _limbAuxiliaryReplayMode;
		AnimationReplayMode::Value _limbExtensionReplayMode;
		AnimationReplayMode::Value _effectorAuxiliaryReplayMode;
		AnimationReplayMode::Value _effectorExtensionReplayMode;
		//TODO: spring damper parameters

	private:
		static void addAttributes() ;

		void setLimbAuxiliaryReplayMode(int replayMode) { _limbAuxiliaryReplayMode=(AnimationReplayMode::Value)replayMode; }
		int getLimbAuxiliaryReplayMode() const { return (int)_limbAuxiliaryReplayMode; }
		void setLimbExtensionReplayMode(int replayMode) { _limbExtensionReplayMode=(AnimationReplayMode::Value)replayMode; }
		int getLimbExtensionReplayMode() const { return (int)_limbExtensionReplayMode; }

		void setEffectorAuxiliaryReplayMode(int replayMode) { _effectorAuxiliaryReplayMode=(AnimationReplayMode::Value)replayMode; }
		int getEffectorAuxiliaryReplayMode() const { return (int)_effectorAuxiliaryReplayMode; }
		void setEffectorExtensionReplayMode(int replayMode) { _effectorExtensionReplayMode=(AnimationReplayMode::Value)replayMode; }
		int getEffectorExtensionReplayMode() const { return (int)_effectorExtensionReplayMode; }
	} ;
}
