File:addBox2D\Dynamics\Joints\b2JointFactory.js
//################################################################################################//
//################################################################################################//
// //
// ██ ██████ ██ ██ ██ ██████ ██ //
// ██ ██ ██ ██ ██ ██ //
// █████ ██ ██ █████ ██ █████ █████ ██ █████ █████ █████ █████ ████ ██ ██ //
// ██ ██ ██████ ██ ██ ██ ██ ██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// █████ ██████ █████ █████ ██ ██ ██ ████ ██ █████ █████ ████ █████ ██ █████ //
// ██ //
// █████ //
// //
//################################################################################################//
//################################################################################################//
/**
* @static
* @class b2JointFactory
* @constructor
* @module Joints
*/
function b2JointFactory() {} Box2D.b2JointFactory = b2JointFactory;
/**
* @public
* @static
* @method create
* @param {b2JointDef} jointDef
* @param {*} [allocator]
* @return {b2Joint}
*/
b2JointFactory.create = function ( jointDef, allocator ) {
var joint = null;
switch (jointDef.type) {
case b2Joint.e_distanceJoint:
{
joint = new b2DistanceJoint( (jointDef instanceof b2DistanceJointDef ? jointDef : null) );
}
break;
case b2Joint.e_mouseJoint:
{
joint = new b2MouseJoint( (jointDef instanceof b2MouseJointDef ? jointDef : null) );
}
break;
case b2Joint.e_prismaticJoint:
{
joint = new b2PrismaticJoint( (jointDef instanceof b2PrismaticJointDef ? jointDef : null) );
}
break;
case b2Joint.e_revoluteJoint:
{
joint = new b2RevoluteJoint( (jointDef instanceof b2RevoluteJointDef ? jointDef : null) );
}
break;
case b2Joint.e_pulleyJoint:
{
joint = new b2PulleyJoint( (jointDef instanceof b2PulleyJointDef ? jointDef : null) );
}
break;
case b2Joint.e_gearJoint:
{
joint = new b2GearJoint( (jointDef instanceof b2GearJointDef ? jointDef : null) );
}
break;
case b2Joint.e_wheelJoint:
{
joint = new b2WheelJoint( (jointDef instanceof b2WheelJointDef ? jointDef : null) );
}
break;
case b2Joint.e_weldJoint:
{
joint = new b2WeldJoint( (jointDef instanceof b2WeldJointDef ? jointDef : null) );
}
break;
case b2Joint.e_frictionJoint:
{
joint = new b2FrictionJoint( (jointDef instanceof b2FrictionJointDef ? jointDef : null) );
}
break;
case b2Joint.e_ropeJoint:
{
joint = new b2RopeJoint( (jointDef instanceof b2RopeJointDef ? jointDef : null) );
}
break;
case b2Joint.e_motorJoint:
{
joint = new b2MotorJoint( (jointDef instanceof b2MotorJointDef ? jointDef : null) );
}
break;
case b2Joint.e_areaJoint:
{
joint = new b2AreaJoint( (jointDef instanceof b2AreaJointDef ? jointDef : null) );
}
break;
default:
/*##if EXPORT_ASSERTS */
if ( b2Settings.ASSERTS_ENABLED ) {
b2Assert( false );
}/*#*/
break;
}
return joint;
};
/**
* Override this method to define your joint destruction behaviour.
*
* Callback function called during World.step upon b2Joint destruction.
* body.destroyJoint(){ b2JointFactory.destroy() }
*
* @public
* @virtual
* @method destroy
* @param {b2Joint} joint
* @param {*} [allocator]
* @return {void}
*/
b2JointFactory.destroy = function ( joint, allocator ) {
return b2Joint.destroy( b2JointDef, allocator );
};