#

API Docs for: 0.6.1
Show: Inherited Protected Private Deprecated

# File: src/constraints/Constraint.js

    module.exports = Constraint;

    var Utils = require('../utils/Utils');

    /**
     * Constraint base class
     * @class Constraint
     * @author schteppe
     * @constructor
     * @param {Body} bodyA
     * @param {Body} bodyB
     * @param {object} [options]
     * @param {boolean} [options.collideConnected=true]
     * @param {boolean} [options.wakeUpBodies=true]
     */
    function Constraint(bodyA, bodyB, options){
        options = Utils.defaults(options,{
            collideConnected : true,
            wakeUpBodies : true,
        });

        /**
         * Equations to be solved in this constraint
         * @property equations
         * @type {Array}
         */
        this.equations = [];

        /**
         * @property {Body} bodyA
         */
        this.bodyA = bodyA;

        /**
         * @property {Body} bodyB
         */
        this.bodyB = bodyB;

        /**
         * @property {Number} id
         */
        this.id = Constraint.idCounter++;

        /**
         * Set to true if you want the bodies to collide when they are connected.
         * @property collideConnected
         * @type {boolean}
         */
        this.collideConnected = options.collideConnected;

        if(options.wakeUpBodies){
            if(bodyA){
                bodyA.wakeUp();
            }
            if(bodyB){
                bodyB.wakeUp();
            }
        }
    }

    /**
     * Update all the equations with data.
     * @method update
     */
    Constraint.prototype.update = function(){
        throw new Error("method update() not implmemented in this Constraint subclass!");
    };

    /**
     * Enables all equations in the constraint.
     * @method enable
     */
    Constraint.prototype.enable = function(){
        var eqs = this.equations;
        for(var i=0; i<eqs.length; i++){
            eqs[i].enabled = true;
        }
    };

    /**
     * Disables all equations in the constraint.
     * @method disable
     */
    Constraint.prototype.disable = function(){
        var eqs = this.equations;
        for(var i=0; i<eqs.length; i++){
            eqs[i].enabled = false;
        }
    };

    Constraint.idCounter = 0;