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

#pragma once

/** \brief Golaem root namespace
*
* Copyright (C) Golaem S.A.  All Rights Reserved.
*/
namespace glm
{
	/**
	* \brief PhysicsMode
	*/
	struct PhysicsMode
	{
		enum Value
		{
			DYNAMIC=0, ///! for objects which are complettely controlled by physics (mass should be !0)
			KINEMATIC, ///! for object moved by kinematic but that collide with other physic objects (mass should be !0 also)
			LOCAL_DRIVE, ///! object's local orientations will be driven by a proportional derivative force (spring-mass)
			ABSOLUTE_DRIVE, ///! object's global positions/orientations will be driven by a proportional derivative force (spring-mass)
			END
		};
	};

	/**
	* \brief CollisionFilterMode
	*/
	struct CollisionFilterMode
	{
		enum Value
		{
			DEFAULT = 0, ///! Dynamics objects collides, dynamic/kinematics collisions are delayed until the trigger shape also triggered
			DISABLE, ///! All collisions are disabled
			SELF, ///! All collisions are disabled except when occuring with a rigid body from the same entity
			ADVANCED, ///! Collisions are disabled depending on the user's advanced filter
			END
		};
	};

	/**
	* \brief ForceType
	*/
	struct ForceType
	{
		enum Value
		{
			LINEARFORCE,
			TORQUE,
			END
		};
	};

	/**
	* \brief ForceMode
	*/
	struct ForceMode
	{
		enum Value
		{
			IMPULSE,
			CONSTANTFORCE,
			END
		};
	};
}
