#

API Docs for: 0.6.0
Show: Inherited Protected Private Deprecated

# File: src/collision/ArrayCollisionMatrix.js

    module.exports = ArrayCollisionMatrix;

    /**
     * Collision "matrix". It's actually a triangular-shaped array of whether two bodies are touching this step, for reference next step
     * @class ArrayCollisionMatrix
     * @constructor
     */
    function ArrayCollisionMatrix() {

        /**
         * The matrix storage
         * @property matrix
         * @type {Array}
         */
    	this.matrix = [];
    }

    /**
     * Get an element
     * @method get
     * @param  {Number} i
     * @param  {Number} j
     * @return {Number}
     */
    ArrayCollisionMatrix.prototype.get = function(i, j) {
    	i = i.index;
    	j = j.index;
        if (j > i) {
            var temp = j;
            j = i;
            i = temp;
        }
    	return this.matrix[(i*(i + 1)>>1) + j-1];
    };

    /**
     * Set an element
     * @method set
     * @param {Number} i
     * @param {Number} j
     * @param {Number} value
     */
    ArrayCollisionMatrix.prototype.set = function(i, j, value) {
    	i = i.index;
    	j = j.index;
        if (j > i) {
            var temp = j;
            j = i;
            i = temp;
        }
    	this.matrix[(i*(i + 1)>>1) + j-1] = value ? 1 : 0;
    };

    /**
     * Sets all elements to zero
     * @method reset
     */
    ArrayCollisionMatrix.prototype.reset = function() {
    	for (var i=0, l=this.matrix.length; i!==l; i++) {
    		this.matrix[i]=0;
    	}
    };

    /**
     * Sets the max number of objects
     * @method setNumObjects
     * @param {Number} n
     */
    ArrayCollisionMatrix.prototype.setNumObjects = function(n) {
    	this.matrix.length = n*(n-1)>>1;
    };