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


#ifndef	__NPHYSIC_CONSTRAINT__
#define	__NPHYSIC_CONSTRAINT__


		#include "physic/physic_item.h"
		#include "physic/physic_constraint_desc.h"

namespace GS {
	class Matrix4;
	namespace S3D {

/*
	@short	Base physic constraint.
	@author	Emmanuel Julien (ejulien@gsworks.fr)
*/
class	PhysicConstraint
{
protected:

		PhysicConstraintDesc::Type type;
		sPhysicItem		item_a, item_b;

public:

virtual	void			SetPivotA(const Matrix4 &) = 0;
virtual	void			SetPivotB(const Matrix4 &) = 0;

virtual	bool			SetupConstraint(const PhysicConstraintDesc &) = 0;
virtual	void			DeleteConstraint() = 0;

virtual	void			Enable(bool = true) = 0;

		PhysicConstraint() : type(PhysicConstraintDesc::TypeNone) {}
virtual	~PhysicConstraint() {}
};

	} // S3D
} // GS


#endif	// __NPHYSIC_CONSTRAINT__
