/* -----------------------------------------------------------------------------
	GSFramework
	Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */


#ifndef	__NPHYSIC_MESSAGE__
#define	__NPHYSIC_MESSAGE__


class	nPhysicConstraint;
class	nPhysicItem;


/*
	@short	Physic message enum.
	@author	Emmanuel Julien (ejulien@gsworks.fr)
*/
enum	nPhysicMessage
{
	PhysicMsg_None					=	0,		///< No message.

	PhysicMsg_AddingConstraint,
	PhysicMsg_ConstraintAdded,
	PhysicMsg_DeletingConstraint,
	PhysicMsg_ConstraintDeleted,

	PhysicMsg_LastMessage
};

/*
	@short	Physic message return value.
	@author	Emmanuel Julien (ejulien@gsworks.fr)
*/
enum	nPhysicReturnValue
{
	PhysicReturn_Ok					=	0
};

//
struct	nPhysicConstraintMessage
{
		nPhysicConstraint	*c;
		nPhysicConstraintMessage(nPhysicConstraint *_c)
		{	c = _c;	}
};

/// Physic listener.
class	nPhysicListener
{
public:

virtual	nPhysicReturnValue	ProcessMessage(nPhysicMessage message, void *parm) = 0;
};


#endif	// __NPHYSIC_MESSAGE__
