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

#pragma once

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

namespace glm
{
	struct GenericSkeletonV0;
	struct GLM_SDK_API GenericPostureV0
	{
		GLM_RTTI( "9accfc18-fbdf-4dd1-8516-d57e10795bdb", glm::GenericPostureV0, addAttributes )

	public:

		GLM_CLASS_STAT_ID( glm::MemoryStatIds::Simulation)

		GenericPostureV0();
		~GenericPostureV0();

		void finish();

		//************************************************************
		//! @name Data
		//************************************************************
		//@{
		const GenericSkeletonV0* _genericSkeleton;

		Vector3		_normalizedPosition;
		Vector3		_worldPosition;
		Quaternion	_pelvisOrientation;

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

	private:

		static void addAttributes();
	};
}

