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

#pragma once

#include "glmRTTI.h"
#include "glmTypes.h"
#include "glmVector3.h"
#include "glmQuaternion.h"

namespace glm
{
	struct HierarchicalBoneV0
	{
		GLM_RTTI( "885b17a4-48af-4ff4-bfa8-b5766ea0f670", glm::HierarchicalBoneV0, addAttributes );

	public:
		GLM_CLASS_STAT_ID( glm::MemoryStatIds::Simulation)

		HierarchicalBoneV0();
		~HierarchicalBoneV0();

		//************************************************************
		//! @name Serialized data
		//************************************************************
		//@{
		glm::GlmString				_name;				//!< bone name
		Vector3	_relativePos;		//!< position of the bone relative to its father
		Quaternion	_baseLocalOri;		//!< orientation of the bone relative to its father
		Quaternion	_preRotation;		//!< pre-rotation of the bone to get the neutral posture of the skeleton
		HierarchicalBoneV0*				_father;	//!< pointer to the father bone
		Array<HierarchicalBoneV0*>		_children;	//!< pointers to children bones
		int		_specificBoneIndex;
		//@}

	private:
		GLM_DISALLOW_COPY_AND_ASSIGN(HierarchicalBoneV0);

		static void addAttributes() ;
	};
}
