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

#pragma once

#include "glmCoreAPI.h"
#include "glmRTTI.h"

namespace glm
{
	struct BonePhysicConfigurationV0
	{
		GLM_RTTI( "c08ffbba-a551-4052-b795-4122adc81f85", glm::BonePhysicConfigurationV0, addAttributes );
	public:

		GLM_CLASS_STAT_ID( glm::MemoryStatIds::Simulation)

		BonePhysicConfigurationV0();
		bool operator==(const BonePhysicConfigurationV0& source) const;

	public:
		//************************************************************
		//! @name Rigid body Configuration
		//************************************************************
		//@{
		bool _inUse;
		bool _automaticDimensions;
		Vector3 _halfExtents;
		bool _useMassInsteadOfBodyDensity;
		float _bodyDensity;
		int _bodyShape;	//!<interpreted as a RagdollRigidBodyShape

		float _restitution;
		float _friction;
		float _linearDamping;
		float _angularDamping;
		float _deactivationTime;
		float _linearSleepingThreshold;
		float _angularSleepingThreshold;
		//@}

		//************************************************************
		//! @name Joint with parent configuration
		//************************************************************
		//@{
		Vector3 _jointAngularLowerLimit;
		Vector3 _jointAngularUpperLimit;
		float	_linearConstraintForceMixing;
		float	_angularConstraintForceMixing;
		float	_linearErrorReductionParameter;
		float	_angularErrorReductionParameter;
		//@}

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