

#ifndef __EPhysicsEnums_h
#define __EPhysicsEnums_h

/// Flags for the newton solver model
//! Use these flags with the setSolverModel function.
enum ENUMERATED_SOLVER_MODEL
{
	/// Use this flag to have exact physics but at the cost of speed.
	ESM_EXACT,
	/// Use this flag to make the physics solver as accuarate as the
	//! speed would allow.
	ESM_ADAPTIVE,
	/// Use this flag to make the physics solver run the fastest 
	//! but this wud be the least precise one.
	ESM_FAST
};

/// Flags for the newton platform architecture
//! Use these flags with the setPlatformArchitecture function.
//! These flags allows newton to take advantage for specific 
//! hardware architecture in the same platform.
enum ENUMERATED_PLATFORM_ARCHITECTURE
{
	/// Force the hardware lower common denominator
	//! for the running platform. 
	EPA_DEFAULT,
	// When this flag is set newton will try to use common 
	//! floating point enhancement like spacial instruction 
	//! set on the specific architecture.
	EPA_MEDIUM,
	/// The engine will try to use the best possible hardware 
	//! setting found in the current platform.
	EPA_BEST
};

enum ENUMERATED_FRICTION_MODEL
{
	EFM_EXACT,
	EFM_ADAPATIVE
};

enum ENUMERATED_RAGDOLL_TYPE
{
	ERT_SIMPLE,
	ERT_COMPLEX,
	ERT_CUSTOM,
	ERT_MESH
};

enum ENUMERATED_PRIMITIVE_TYPE
{
	EPT_NULL,
	EPT_CUBE,
	EPT_SPHERE,
	EPT_CONE,
	EPT_CAPSULE,
	EPT_CYLINDER,
	EPT_CHAMFERCYLINDER
};

enum ENUMERATED_BODY_TYPE
{
	EBT_STATIC,
	EBT_DYNAMIC
};

enum ENUMERATED_ACTION
{
	EA_MOVE_FORWARD,
	EA_MOVE_BACKWARD,
	EA_STRAFE_LEFT,
	EA_STRAFE_RIGHT,
	EA_JUMP,
	EA_DUCK
};

/// PHYSICS_UPDATE_MODE
//! Use these flags with get/setUpdateMode().
enum PHYSICS_UPDATE_MODE
{
	/// Newton will be updated at a constant frame rate. The default is 60FPS; you can change this with ::setUpdatesPerSecond().
	UM_FIXED_FRAME_RATE, 
	/// Newton will be updated every frame, using the correct timestep. 
	UM_EVERY_FRAME, 
	UM_MAX_TYPES
};


#endif