/* 
 * 
 * Confidential Information of Telekinesys Research Limited (t/a Havok).  Not for disclosure or distribution without Havok's
 * prior written consent.This software contains code, techniques and know-how which is confidential and proprietary to Havok.
 * Level 2 and Level 3 source code contains trade secrets of Havok. Havok Software (C) Copyright 1999-2008 Telekinesys Research Limited t/a Havok. All Rights Reserved. Use of this software is subject to the terms of an end user license agreement.
 * 
 */

// A demo which shows continuous addition/removal of a constraints from a hkpWorld.
// There are two bodies, a fixed one and a dynamic one. Every time the dynamic one falls
// below the Y=0 plane, a constraint is added to the simulation, and every time it moves 
// above the plane the same constraint is removed. This also shows how a constraint between the
// *same* bodies can be dynamically modified. It is only necessary to reset the pivots/rest length 
// etc. of the constraint to ensure that the constraint is once again valid.
// In this case there are only two pivots for a ball and socket constraint. It is currently *not*
// possible to alter the bodies of a constraint, as this will cause simulation islands to break.

#ifndef HK_AddRemoveConstraintsDemo_H
#define HK_AddRemoveConstraintsDemo_H

#include <Demos/DemoCommon/DemoFramework/hkDefaultPhysicsDemo.h>

class hkpRigidBody;
class hkpBallAndSocketConstraintData;


class AddRemoveConstraintsDemo : public hkDefaultPhysicsDemo
{
	public:

		HK_DECLARE_CLASS_ALLOCATOR(HK_MEMORY_CLASS_DEMO);

		AddRemoveConstraintsDemo(hkDemoEnvironment* env);
		~AddRemoveConstraintsDemo();

		Result stepDemo();

	protected:

		void createBodies();
		void addConstraint();
		void removeConstraint();

	protected:
		
		hkpRigidBody*				m_fixedBody;
		hkpRigidBody*				m_dynamicBody;
		hkpConstraintInstance*				m_constraint;
		hkpBallAndSocketConstraintData*  m_constraintData;
		hkBool						m_constraintAdded;
};

#endif	// HK_AddRemoveConstraintsDemo_H

/*
* Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20080529)
*
* Confidential Information of Havok.  (C) Copyright 1999-2008 
* Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
* Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
* rights, and intellectual property rights in the Havok software remain in
* Havok and/or its suppliers.
*
* Use of this software for evaluation purposes is subject to and indicates 
* acceptance of the End User licence Agreement for this product. A copy of 
* the license is included with this software and is also available at
* www.havok.com/tryhavok
*
*/
