API Documentation for:
Show:

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 );
    };