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

#pragma once

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

namespace glm
{
	struct GenericSkeletonV1;
	struct GLM_SDK_API GenericPostureV1
	{
		GLM_RTTI( "c45a0440-b545-4d58-adaa-57775c832179", glm::GenericPostureV1, addAttributes )

	public:

		GLM_CLASS_STAT_ID( glm::MemoryStatIds::Simulation)

		GenericPostureV1();
		~GenericPostureV1();

		void finish();

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

		Vector3		_pelvisNormalizedPosition;
		Vector3		_pelvisWorldPosition;
		Quaternion	_pelvisOrientation;

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

	private:

		static void addAttributes();
	};
}

