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

#pragma once

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

namespace glm
{
	struct GenericSkeletonV2;

	struct GLM_SDK_API GenericPostureV2
	{
		GLM_RTTI( "9fd4451b-3bfd-4815-8a12-59cdf54f8f43", glm::GenericPostureV2, addAttributes );
	public:

		GLM_CLASS_STAT_ID( glm::MemoryStatIds::Simulation)

		GenericPostureV2();
		~GenericPostureV2();

		void finish() ;

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

	public:
		//************************************************************
		//! @name Data
		//************************************************************
		//@{
		const GenericSkeletonV2* _genericSkeleton;

		Vector3		_pelvisNormalizedPosition;
		Vector3		_pelvisWorldPosition;
		Quaternion	_pelvisOrientation;
		Vector3		_movingDirection;

		glm::Array<Quaternion>	_restRelativeOriArray;
		glm::PODArray<Angle>	_ikNormalOffsetArray;
		glm::PODArray<float>	_lengthRatioArray;
		glm::Array<Quaternion>	_restRelativeEOBOriArray;
		int			_skeletonBonesSize;
		//@}
	};
}

