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

#pragma once

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

namespace glm
{
	struct GenericSkeletonV3;

	struct GLM_SDK_API GenericPostureV3
	{
		GLM_RTTI( "1686c314-56dc-45aa-aae1-194430d9d08b", glm::GenericPostureV3, addAttributes );
	public:

		GLM_CLASS_STAT_ID( glm::MemoryStatIds::Simulation)

		GenericPostureV3();
		~GenericPostureV3();

		void finish() ;

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

	public:
		//************************************************************
		//! @name Data
		//************************************************************
		//@{
		const GenericSkeletonV3* _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;

		glm::PODArray<float>		_blendShapes;
		//@}
	};
}
